Autor | Zpráva | ||
---|---|---|---|
kopi Profil |
#1 · Zasláno: 6. 9. 2016, 22:53:58
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 |
#2 · Zasláno: 6. 9. 2016, 23:12:50
Chceš jen seznam modelů? Tak to bude
SELECT model FROM produkty 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 |
#3 · Zasláno: 6. 9. 2016, 23:18:17
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: 1SELECT p.*, COUNT(*) AS pocet 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 |
#6 · Zasláno: 7. 9. 2016, 00:02:20
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 |
|||
Časová prodleva: 8 let
|
Toto vlákno je staré, již dlouho do něj nikdo nepřispíval.
Informace a odkazy zde uváděné už nemusejí být aktuální. Nechcete-li řešit zde uvedenou konkrétní otázku, založte si vlastní vlákno, nepište do tohoto. Vložíte-li sem nyní příspěvek, upoutáte pozornost mnoha lidí a někteří z nich si jen kvůli vám přečtou i všechny předcházející příspěvky. Předpokládáte-li, že váš text skutečně bude hodnotný, stiskněte následující tlačítko:
Běda vám, jestli to bude blábol.
0