Autor Zpráva
Tomek
Profil *
Zdravím,
prosím poraďte jak vytvořit dotaz s takovýmto triviálním zadáním. Mám spojovací tabulku pro N:N se sloupci id_product a id_param. Chci vybrat všechny id_product, které mají VŠECHNY parametry, tedy něco jako

SELECT * FROM tabulka WHERE id_param IN (1,2,3,4..) GROUP BY id_product

Rozdíl je v tom, že takto mi IN vybere všechny, které splňují alespoň jednu podmínku.

Díky za každou radu,
T.
Alphard
Profil
tady je zdá se nevhodně použítá konstrukce in
Mám spojovací tabulku pro N:N
chtělo by to více informací, aby by možné pospojovat ty 3 tabulky dohromady,
takhle nevím, co poradit, protože id_param zřejmě obsahuje 1 číslo a je logické, že nelze splnit více podmínek, např. číslice 2 se nemůže zároveň rovna 2 a 3
Tomek
Profil *
Diky za odpoved, posilam vic info (zaroven to trochu zjednodusim):

tabulka 1 - produkty
tabulka 2 - parametry

obecne jeden produkt muze mit vic parametru a zaroven 1 parametr muze byt u vic produktu, tzn. N:N

mam spojovaci tabulku se sloupci id_product, id_param

Uloha je takova, ze chci napr. vyhledat vsechny auta (tzn. produkty), ktere maji airbag, ABS a palubni pocitac. Vim ze nemam pouzit IN, protoze mi to najde vsechna auta, ktera maji jen neco z toho. Ja naopak potrebuji vyfiltrovat jen ta auta, ktera maji vse. Snad jsem to popsal trochu pochopitelneji.

Diky,
T.
ninja
Profil
Tomek: Tabulka parametri je atributova, nebo vice sloupcova?

Dotaz asi nejak takto:

SELECT * FROM prudukty pr JOIN spojovacka sp ON pr.id_produkt = sp.id_produkt JOIN parametry pa ON sp.id_param = pa.i_param WHERE pa.abs = 'ano' AND pa.pocitac = 'ano'

nebo pro atributovou tabulku

SELECT * FROM prudukty pr JOIN spojovacka sp ON pr.id_produkt = sp.id_produkt LEFT JOIN parametry pa ON sp.id_param = pa.i_param WHERE (pa.atribut = 'abs' AND pa.hodnota = 'ano') OR (pa.atribut = 'pocitac' AND pa.hodnota = 'ano')
Kajman_
Profil *
SELECT * FROM tabulka WHERE id_param IN (1,2,3,4..) GROUP BY id_product

Rozdíl je v tom, že takto mi IN vybere všechny, které splňují alespoň jednu podmínku.


Pokud to lehce upravíte na

SELECT id_product FROM tabulka WHERE id_param IN (1,3,5,8,6) GROUP BY id_product HAVING count(distinct id_param)=5


tak to vypíše takové, které mají zadaný počet parametrů z té závorky.

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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

0