Autor Zpráva
joe
Profil
Ahoj (po dlouhé době :)), měl bych zřejmě jednoduchou otázku, se kterou si ale nevím rady.

Mám tabulku položek. Položka může mít různé parametry a ty nabývají různých hodnot.

Potřebuji teď vytvořit dotaz, který odpovídá například tomuto:

SELECT * FROM polozky p
JOIN t1 ON t1.polozka_id = p.id AND t1.id IN (1, 2, 3, 4, 5)
JOIN t2 ON t2.polozka_id = p.id AND t2.id IN (40, 45)

Problém je, že bych potřeboval místo "OR", které se vytváří díky klauzuli IN mít "AND", tzn. použít HAVING COUNT () = počet čísel v závorce. Jak to ale udělám v případě, že takových porovnávání chci udělat více, jde to?

Díky za odpověď
Kajman
Profil
Např.

HAVING COUNT(distinct t1.id)=5 AND COUNT(distinct t2.id)=2

Případně připojíš už výsledek groupování s omezením na správný počet (to by mohlo být rychlejší, je nutné si to vyzkoušet a změřit).

JOIN (select polozka_id from t1 where id in (1, 2, 3, 4, 5) group by polozka_id having count(*)=5) t ON t.polozka_id = p.id
joe
Profil
Kajman:
Jsem pitomej, jasně, díky moc, v tu chvíli mě nenapadlo, že můžu počítat pomocí COUNT vlastně i jiný počet řádků z jiné tabulky. Zkusím i připojení.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0