Autor Zpráva
stepanka
Profil *
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
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 *
TomášK:
Funguje, moc děkuju.

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0