Výpis z databáze – MySQL – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Výpis z databáze – MySQL – Fórum – Programujte.comVýpis z databáze – MySQL – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
fix0
Stálý člen
23. 9. 2019   #1
-
0
-

Ahoj všem,

prosím o radu zkušenější. V databázi je v tabulce pro jedno ID produktu více cen. A já potřebuji vypsat všechny ty ceny, ale sloučit je do jednoho řádku.

V databázi to vypadá takto:

id, id_produktu, id_kategorie_ceny, cena_pro_tu_kategorii

  • 1, produkt1, kategorie1, 123
  • 2, produkt1, kategorie2, 234
  • 3 produkt1, kategorie3, 124

a já v selectu potřebuji mít data poskládané tak, aby všechny ceny produkty byly na jednom řádku:

id, id_produktu, cena1, cena2, cena3

  • 1, produkt1, 123,234,124
  • 2, produkt2, 456,158,452
  • 3, produkt3, 753,752,751

Můj stav viz screenshot.

Děkuji všem za tipy.

Připojen obrázek.

Připojen obrázek.

Nahlásit jako SPAM
IP: 31.30.173.–
Kit+15
Guru
23. 9. 2019   #2
-
0
-

#1 fix
Zkus agregační funkci GROUP_CONCAT().

Nahlásit jako SPAM
IP: 46.135.95.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
fix0
Stálý člen
23. 9. 2019   #3
-
0
-

#2 Kit

Děkuji za tip, ale nevypadá to, jako funkce kterou potřebuji.

Tebou doporučená funkce to sloučí do jednoho sloupečku, jenže já to potřebuji jako jednotlivé sloupečky, ale možná by vlastně šlo vyřešit další funkcí, která to zase rozdělí? :-)

Nahlásit jako SPAM
IP: 31.30.173.–
Kit+15
Guru
24. 9. 2019   #4
-
+1
-
Zajímavé
fix +

#3 fix
Aha, tak to udělej přes JOIN.

Nahlásit jako SPAM
IP: 46.135.93.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
MilanL+1
Grafoman
24. 9. 2019   #5
-
+1
-
Zajímavé
fix +

#1 fix
PIVOT funkci SQL jsi zkoušel?

nevýhoda PIVOTu je, že je třeba vědět dopředu počet sloupců.

dá se sice udělat dynamická verze(kde se počet sloupců zjistí a vygeneruje podle counteru., ale co jsem koukal, tak jedině přes uloženou proceduru.

Nahlásit jako SPAM
IP: 91.139.9.–
fix0
Stálý člen
4. 10. 2019   #6
-
0
-

Kit: Jak by se to dalo udělat? Přijde mi, že nechápeš o co mi jde, protože JOIN jsem se naučil používat hodně často a nezdá se mi, že by mi v tomto případě JOIN měl pomoci. Mohl bys mi dát nějaký tip, jak to myslíš? Jak by se to dalo udělat prostřednictvím JOIN?

EDIT: Už vím jak to myslíš. Myslíš to takto: http://sqlfiddle.com/#!9/7ef46c/2

MilanL: Díky ti moc za tip, jdu si k tomu zkusit najít informace. Snad to bude co hledám.

EDIT: Řešení pomocí pivot table jsem nenašel, resp asi našel, ale nerozuměl jsem mu, ale našel jsem díky tomu jiné řešení bez pivota, které vypadá natolik jednoduché, že si to nejspíš zvládnu nasadit pro svůj problém: http://sqlfiddle.com/!9/89227c/1

Nahlásit jako SPAM
IP: 31.30.173.–
Řešení
fix0
Stálý člen
4. 10. 2019   #7
-
0
-
Vyřešeno Nejlepší odpověď

Jak je u mě zvykem, většinou vše vyřeším tak trochu kombinací všech variant, které mi poradíte stylem MIX od každého něco. :D

Ve finále jsem to vyřešil kombinací jak JOIN, tak i řešení pivotem bez pivota.

Využil jsem JOIN a CASE následujícím způsobem: http://sqlfiddle.com/#!9/0be1f2/1

Nahlásit jako SPAM
IP: 31.30.173.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 9 hostů

Podobná vlákna

Výpis z databáze — založil Maros

Výpis z databáze — založil Twino

Výpis z databáze — založil Lukáš

Výpis dílů z databáze — založil Roman

Výpis jména z databáze — založil Adam Hofhans

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý