Autor Zpráva
joe
Profil
Ahoj,

potřeboval bych pomoci s dotazem, ani nevím jak to pojmenovat a zda to půjde v tom, na čem zrovna pracuji:

Tři tabulky:

Recept
Ingredience
Recept_ingredience (vazebni)

Mám tedy relaci M:N a teď bych potřeboval vybrat ty recepty, které mají nějaké ingredience - třeba tři, ale zároveň.

Tento dotaz funguje, jen to je jako OR a já bych potřeboval AND. Jednoduše zapsáno:

SELECT * FROM recept JOIN recept_ingredience WHERE recept_ingredience IN (1,2,3) 


Potřeboval bych tedy vybrat recepty, které mají ingredience s id = 1, 2 a 3. A ne s id = 1 nebo 2 nebo 3

Díky za pomoc


EDIT: Teď mě napadlo použít vždy join a porovnávat jen to jedno id ... našel by se i jiný způsob? A potřeboval bych to jen v jednom dotazu a nejlépe, kdyby byly ty id takto v závorce, ať to nemusím předělávat už :)
Kajman_
Profil *
SELECT r.* FROM recept r JOIN recept_ingredience WHERE recept_ingredience IN (1,2,3)
group by r.recept_id
having count(distinct recept_ingredience)=3
joe
Profil
Díky, zkusím, jestli to projde (není to čisté mysql ale hql do hibernate). Taky mě napadlo počítat ingredience, ale neprošel by i jiný recept, který by měl tři ingredience? Ale třeba jiné než jsou ty 1,2,3 - a jen jednu z nich.
joe
Profil
A ty recepty mohou mít ale i víc ingrediencí, ale hlavně musí mít ty co jsou uvedené.

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