Autor Zpráva
dh.mix
Profil *
ahoj, mel bych jeden dotaz se kterym si vubec nevim rady...

mam tabulku s produkty (id,nazev,cena, apod), tabulku s kategoriemi (id,nazev, apod) a pomocnou tabulku na zarazeni produktu do kategorii produkty_kategorie_xref (id,id_produkt,id_kategorie)...... pri vlozeni produktu do urcitych kategorii mam v tabulce produkty_kategorie_xref ulozene tyto zaznamy - 1,5,10 a 2,5,12 a treba 3,5,13 ........ ted s cim si nevim rady jde o vypsani produktu, ktere jsou v kategorii, kdyz mam vybranych z filtru vice kategorii, napr. chci vybrat produkty, ktere jsou v kategoriich 10 a 12... jak by mel vypadat takovy dotaz do databaze???

moc dekuji za jakekoliv nakopnuti, opravdu se s tim uz dlouho peru :/
Petr
Tori
Profil
Šlo by to např. poddotazem:
SELECT p.* FROM produkty p
WHERE EXISTS (SELECT 1 FROM produkty_kategorie_xref k WHERE k.id_produkt = p.id AND k.id_kategorie IN(10,12))

anebo spojením tabulek:
SELECT p.* FROM produkty p
INNER JOIN produkty_kategorie_xref k ON k.id_produkt = p.id AND k.id_kategorie IN(10,12)

Které z toho použít bych se rozhodla podle výsledku EXPLAIN.
dh.mix
Profil *
Dekuji... Zkousel jsem, ale asi to nevyresi co potrebuju, oba dotazy totiz vyberou i produkty, ktere jsou napriklad pouze v kategorii 10, coz nepotrebuju. Pokud tam bude ten poddotaz s in(10,12) tak jestli to spravne chapu, tak to bude vzdy vybirat pokud budou alespon v jedne z tech kategorii (jako operator OR)... Neni jina moznost?

Dekuju
Tori
Profil
Aha, nepochopila jsem, že chcete, aby produkty byly zároveň v obou kategoriích.
Koukněte na do FAQ: Některé časteji řešené dotazy pro MySQL - FAQ » Nalezení položek mající všechny hledané vlastnosti a podle toho upravte ten poddotaz (WHERE EXISTS ...).
dh.mix
Profil *
Vyreseno, dekuji!

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