Autor Zpráva
petr522011
Profil *
Ahoj. Zkoušel jsem si udělattyto tabulky:

KATEGORIE
id | kategorie | clanek_id
0 | kateogrieA| 1
1 | kateogrieB| 1
2 | kateogrieC| 1

ČLÁNKY
id | název
1 | název

Chtěl jsem si pomocí dotazu vypsat články, které mají kategorie='kateogrieA' and kategorie='kateogrieB'. Ale pomocí podmínky WHERE se mi to nepodařilo uděl. Dotaz fungoval jen když jsem měl zadanou jen jednu podmínku np. kategorie='kateogrieB'.

SELECT * FROM clanky
LEFT JOIN kategorie ON clanky.id=kategorie.clanek_id
WHERE kategorie.kategorie='kateogrieA' and kategorie.kategorie='kateogrieB'

Mohl byste mi někdo říci, proč mi to nefunguje? Děkuji
Taps
Profil
petr522011:
zkus
SELECT * FROM clanky 
LEFT JOIN kategorie ON clanky.id=kategorie.clanek_id 
WHERE kategorie.kategorie='kateogrieA' or kategorie.kategorie='kateogrieB' 
petr522011
Profil *
To by mne vypsalo články, které mají kateogrieA či kateogrieB.
Ale chci vypsat články, které mají kateogrieA a zároveň kateogrieB
Taps
Profil
petr522011:
to co jsem napsal zajistí výpis záznamu z kategorií A a B, takže to nechceš ?
TomášK
Profil
viz http://diskuse.jakpsatweb.cz/?action=vthread&forum=28&topic=121243
petr522011
Profil *
tohle nechci. To by mi vypsalo články, které mají kateogrieA nebo kateogrieB

potřebuji vypsat články, které mají podmínku, že musí být v kateogrieA a kateogrieB
Kajman_
Profil *
petr522011:
Ale kdepak, asi jste nečetl odpověď
http://diskuse.jakpsatweb.cz/?action=vthread&forum=28&topic=121243#2
petr522011
Profil *
ano teď zkouším. Až po odeslání mé odepovedi se zobrazila zpráva od TomášK
Anonymní
Profil *
Mám tohle:

SELECT clanky.id FROM clanky
LEFT JOIN kategorie ON clanky.id=kategorie .clanek_id
WHERE kategorie.kategorie IN ('kateogrieA','kateogrieB') GROUP BY clanky.id

a to mi nevrátí články, které mají kateogrieA nebo kateogrieB... - chci jen, které mají obě
Kajman_
Profil *
Však jste to nepoužil všechno, ta podmínka v having je důležitá!
SELECT clanky.id FROM clanky
INNER JOIN kategorie ON clanky.id=kategorie.clanek_id
WHERE kategorie.kategorie IN ('kateogrieA','kateogrieB') GROUP BY clanky.id
HAVING count(distinct kategorie.kategorie)=2 -- číslo se mění s počtem hledaných kategorií 
petr522011
Profil *
já nemehlo, mockrát děkuji :-)
petr522011
Profil *
Mohl bych ještě vědět, jak by se přidala tato podmínka?

Vypiš všechny články, které mají kateogrieA a kateogrieB A kateogrieA musí mít ID0 a KategorieB musí mít ID1

pomocí IN mi to nešlo
Kajman_
Profil *
Podle id dáte jednoduše jen
WHERE kategorie.id IN (0,1)


Celá podmínka jde také zapsat, ale smysl mi uniká.
WHERE ((kategorie.kategorie='kateogrieA' AND kategorie.id=0)
       or (kategorie.kategorie='kategorieB' AND kategorie.id=1))

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