Autor | Zpráva | ||
---|---|---|---|
wig Profil |
#1 · Zasláno: 25. 4. 2012, 20:48:50
Prosím o radu.
Mám tabulku JEDNA: id, email dejmetomu Tabulku DVA: id, id_jedna, parametr, email V tabulce JEDNA je seznam emailů. V tabulce dva: JEDNA.id = DVA.id_jedna a parametr je druh emailů ktery se posle treba "email1" Potřebuju SELECT ktery vytahne z tabulky JEDNA všechny emaily na které ještě není zápis v tabulce DVA SELECT * FROM JEDNA LEFT JOIN DVA on JEDNA.id = DVA.id_jedna WHERE parametr = 'email1' AND DVA.email is null tohle samozrejme nefunguje |
||
Tori Profil |
#2 · Zasláno: 25. 4. 2012, 21:12:05
Koukněte na poddotazy s WHERE NOT EXISTS... http://dev.mysql.com/doc/refman/5.1/en/exists-and-not-exists-subqueries.html
|
||
wig Profil |
#3 · Zasláno: 25. 4. 2012, 21:25:34
left joinem to tedy nejde resit?
ctu napriklad zde. http://www.linuxsoft.cz/article.php?id_article=882 ale nejde mi aplikovat taktez zde je pdobne reseni : výběr LEFT JOIN |
||
Tori Profil |
wig:
V [#1] máte nesmyslnou část where: is null = řádek v té tabulce neexistuje. Tedy i hodnota DVA.parametr bude NULL. Pokud chcete najít jen adresy, na které ještě nebyl poslán e-mail typu "email1", přesuňte tu část z where do join on, teda ... LEFT JOIN DVA on JEDNA.id = DVA.id_jedna AND DVA.parametr = 'email1' WHERE DVA.email IS NULL |
||
Časová prodleva: 12 let
|
0