Autor Zpráva
kopi
Profil
dobrý den,
předem se omlouvám, vím, že na tohle téma je tu hodně vláken, ale prostě nejsem schopen to aplikovat na svůj případ.

mám dvě tabulky

specifikace - id_produkt,......
Produkty - id,model,....

v tabulce specifikace může být duplicita id_produkt. Potřebuju vypsat všechny id_produkt z tabulky specifikace GROUP BY id_produkt a pak vypsat záznamy, kde specifikace.id_produkt = produkty.id GROUP BY produkty.model. To znamená, že v tabulce budu mít třeba 10 záznamů, ale pouze 2 modely, takže celkově by se vypsaly jen 2 záznamy. Nějak tam neumím zahrnout to dvojí GROUP BY.

Děkuji za rady.
Keeehi
Profil
Chceš jen seznam modelů? Tak to bude
SELECT model FROM produkty

Má se ještě ke každému modelu vypsat specifikace? Tak to je přece problém, když každý model může mít více specifikací a ty chceš vypsat jen jednu. Jak má databáze poznat, kterou specifikaci chceš vypsat?
kopi
Profil
Keeehi:
špatně jsem to napsal. Nejdřív je potřeba zjistit, jestli produkt je v tabulce specifikace. Takže jsem myslel, že postup je takový nejprve vypsat všechny id_produkt z tabulky specifikace group by id_produkt a pak teprve tyhle záznamy projet tabulkou produkty a vypsat model, který patří k id_produkt z tabulky specifikace
juriad
Profil
Stačí jednoduše takto:
kopi:
SELECT p.*, COUNT(*) AS pocet
FROM produkty p
JOIN specifikace s ON s.id_produkt = p.id
GROUP BY p.id

Ten JOIN se postará o to, aby se uvažovaly jen moduly, pro které existuje specifikace. Na závěr se provede GROUP BY. Záznamy z tabulky specifikace nikterak nepoužijí.
kopi
Profil
juriad:
ale to mi právě vypíše všechny záznamy, kde se shoduje s.id_produkt a p.id, ale v tabulce specifikace může být k jednomu p.id více záznamů se stejným id_produkt. Takže mi to vypíše všech 10 záznamů, ale 8 z nich je stejných, proto bych to potřeboval pomocí group by sloučit, aby se vypsaly jen "skupiny" modelů + počet produktů, které obsahují stejný model.

Tzn. Specifakce: id_produkt = 1 (to tam je 8x) => 8 různých specifikací
Produkty: id = 1, model = pračka

takže by to nevypsalo 8 záznamů, ale jen 1 => výsledek by byl pračka (8). A když p.id nebude obsaženo v tabulce specifikace, tak se ten záznam nevypíše.
juriad
Profil
kopi:
Mám za to, že můj dotaz tvůj požadavek splňuje. Vypíše jednou každý produkt, který má alespoň jednu specifikaci. A teď jsem přidal i ten žádaný počet.
Keeehi
Profil
kopi:
Buď se to dá tím JOINem, jak psal juriad, nebo to omezit podmínkou
SELECT * FROM produkty
WHERE id IN (SELECT id_produkt FROM specifikace)
Kolik je záznamů pro jedno ID v tabulce specifikací to však zjistit neumí.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0