Tabelle gruppieren und ausgeben

atlantyz

Erfahrenes Mitglied
Hallo,

ich habe mal wieder ein Problem, bei dem ich nicht weiter komme.

Ich habe 3 Tabellen, die ich miteinander verknüpfen möchte.

Dabei handelt es sich um eine Tabelle mit Artikeln, eine mit Bestellungen und eine mit Firmennamen.

Ich verknüpfe die Tabellen mit "join" und bekomme dann die Firma mehrmals ausgegeben, obwohl ich sie nur einmal brauche, sowie die Bestellnummer mehrmals.

PHP:
SELECT mod_stamm_firmen.bezeichnung as firma, 
mod_best_bestellungen.id as bestellnr, 
mod_best_bestellungen.datum_angelegt as datum, 
mod_best_bestellungen.bestellt_fuer, 
mod_best_artikel.bezeichnung 
FROM ((mod_best_bestellungen INNER JOIN mod_stamm_firmen on mod_best_bestellungen.id_firma = mod_stamm_firmen.id) 
INNER JOIN mod_best_artikel on mod_best_artikel.bestell_id = mod_best_bestellungen.id)
WHERE mod_best_bestellungen.datum_bestellt !='0' and storno != '1' and abg = '1'
ORDER BY datum

Da kommt folgendes bei raus:
Code:
firma 	       bestellnr 	datum 	      bestellt_fuer 	bezeichnung
Systempartner  	1004 	1081288800 	  	               #_Komplett-PC
Systempartner  	1004 	1081288800 	  	               #_TFT15
Systempartner 	1004 	1081288800 	  	               #_Office 2003 Basic
Systempartner  	1004 	1081288800 	  	               #_TFT 17
Systempartner  	1004 	1081288800 	  	               #_Windows 2000
MeTa 	        1005 	1081893600 	  	               #_ACDsee 6.0 Deluxe
Vistec 	        1007 	1081980000 	  EDV 	       #_Firewall Netscreen
Systempartner  	1006 	1081980000 	  	               #_Laserfax HP 3380
MeTa 	        1008 	1082584800 	Verwaltung       #_USB Hotsync Kabel
MeTa 	        1008 	1082584800 	Verwaltung       #_Travel Charger Kit
Systempartner  	1234 	1126130400 	 	               #_Sony Netzteil VGN-S4XP
Wie man sieht, habe ich nun die Bestellnr 1004 insgesamt 5x, weil 5 unterschiedliche Artikel dran hängen. Ich benötige sie aber nur 1x, weil wenn ich mir das in PHP als Tabelle ausgeben lasse, stehen die Artikel einzeln mit jeweils ihrer dazugehörigen Bestellung untereinander. ich möchte aber die Bestellung ausgeben und dann die 5 dazugehörigen Artikel.

Kann ich den vorderen Teil der Tabelle irgendwie so zusammenfassen, dass das dabei rauskommt:
Code:
firma                   bestellnr           datum         bestellt_fuer        bezeichnung
Systempartner     1004                 108128880                            #_Komplett-PC
                                                                                               #_TFT15
                                                                                               #_Office

Bisher habe ich es so gelöst: ich habe mir die Bestellungen anhand Kriterien rausgesucht und dann eine Extra- Abfrage zu den Artikeln gemacht. Da das aber sehr lange dauert, würde ich es gern in eine einzige Abfrage packen. Oder geht das einfach nicht, was ich mir vorstelle?

Ich hoffe man kann das mit den Tabellen erkennen. Ich bekomm irgendwie grad keine gescheite Formatierung hin.
 
Mit SQL nicht wirklich sauber wenn du pro Artikel eine Ziele haben willst.

Natürlich kannst du bei MySQL mit Variablen arbeiten und die Werte mit dem Feld davor vergleichen und dann gff. unterdrücken (obs in anderen DBs als MySQL geht, hängt davon welche DB es ist)

Oder du unterdrückst sie nachher im Ausageb-Programm (PHP? Java?)

Du kannst natürlich auch pro bestellung auf eine Zeile Gruppieren und die Artikel mittels GROUP_CONCAT() mit einem Zeilenumbruch zusammenfügen.
 
Zurück