Autor | Zpráva | ||
---|---|---|---|
joe Profil |
#1 · Zasláno: 23. 2. 2016, 01:36:04
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 |
#2 · Zasláno: 23. 2. 2016, 07:54:21
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 |
#3 · Zasláno: 23. 2. 2016, 19:47:23
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í. |
||
Časová prodleva: 9 let
|
0