Autor | Zpráva | ||
---|---|---|---|
stepanka Profil * |
#1 · Zasláno: 3. 2. 2011, 22:10:11
Ahoj,
poradil by mi někdo prosím? Když mám dotaz typu: SELECT id_produktu FROM sablony WHERE id_sablona IN (1,2,3,4); tak mi to vyhodí výsledek stejný, jako by dotaz vypadal: SELECT id_produktu FROM sablony WHERE id_sablona = 1 OR id_sablona = 2 OR id_sablona = 3 OR id_sablona = 4; A já bych potřebovala jeden dotaz uspořádat tak, aby misto OR byl operátor AND. Tzn., aby to vybralo všechny id_produktu, které mají id_sablony 1 a zároveň mají id_sablony 2 a zároveň... atd. Jinými slovy vybraný produkt musí mít se svým ID v tabulce sablony 4 záznamy. Pokud má méně než 4, nevybírat. Nevíte někdo, jestli něco podobného existuje, nebo jak nejefektivněji se to dá řešit? Mockrát děkuju. |
||
TomášK Profil |
#2 · Zasláno: 3. 2. 2011, 22:22:06 · Upravil/a: TomášK
stepanka:
Ekvivalentní zápisu s AND bude WHERE 1 = 0. Žádný záznam nikdy nebude mít id zároveň rovno dvěma různým číslům, tedy výsledek dotazu pro AND bude vždy prázdný. Správné řešení je SELECT id_produktu FROM sablony WHERE id_sablona IN (1,2,3,4) GROUP BY id_produktu HAVING COUNT(DISTINCT id_sablona) = 4 |
||
stepanka Profil * |
#3 · Zasláno: 4. 2. 2011, 19:28:25
TomášK:
Funguje, moc děkuju. |
||
Časová prodleva: 13 let
|
0