[mySQL] SubSelect oder SUM mit DISTINCT

Zero2000

Erfahrenes Mitglied
Hallo ihr lieben,

bin wieder mal verzweifelt.
Ich habe eine Tabelle in der gibt es eine Spalte id_Lagerort, id_Hersteller und eine Spalte anzahl.
Beispiel:
Lager | Hersteller | Anzahl
1 | 3 | 4
2 | 2 | 2
2 | 3 | 6
1 | 3 | 2
1 | 1 | 2

Ich möchte mir nun die 3 Sachen wie nachfolgend ausgeben.
1 (8) <-- Überschrift (Lager) mit Gesamtanzahl an Artikeln
-------------
3 (6) <-- Hersteller mit jeweiliger Anzahl an Artikeln
1 (2)
......

2 (8)
-------------
2 (2)
3 (6)

Bis auf die Gesamtanzahl und die Anzahl je Hersteller bin ich auch soweit durch.
Nachfolgend der Quellcode wie es bis jetzt aussieht. Im Moment lese ich das Feld anzahl nicht mit aus, da mir sonst das DISTINCT in die Quere kommt.
PHP:
$result = mysql_query("
SELECT DISTINCT te.id_lagerort, te.id_hersteller, lo.id AS lagerortid, lo.lagerort, he.id AS herstellerid, he.hersteller
FROM tl_textilien AS te
LEFT JOIN tl_lagerorte AS lo ON te.id_lagerort = lo.id
LEFT JOIN tl_hersteller AS he ON te.id_hersteller = he.id
ORDER BY te.id_lagerort ASC, te.id_hersteller ASC
")or die (mysql_error());
while($zeile = mysql_fetch_array($result))
 $anzeige[$zeile['lagerort']][] = $zeile['hersteller'];
 var_dump($anzeige);
 foreach($anzeige as $key => $val){
 echo '<div id="start">';
 echo '<div id="start-oben">';
 echo $key;
 echo '</div>';
 echo '<div id="start-unten">';
 foreach($val as $subval){
 echo $subval."<br>";
 }
 echo '</div>';
 echo '</div>';
 }
Kann mich da jemand mal in die richtige Richtung schubsen??

Liebe Grüße
Maik
 
Achso? Es geht also auch einfach?
WITH ROLLUP, und wieder was gelernt.
Jetzt muss ich mein Array nur noch um die Anzahl erweitern und dann sollte das klappen.
Na da geb' ich mir mal Mühe.

Vielen Dank und liebe Grüße
Maik
 
Hallo,

noch eine Frage bevor ich den Titel als gelöst markiere.
Soweit hab ich es, zu jedem Hersteller wird nun die korrekte Anzahl Artikel angezeigt.

Nur wie kann ich denn jetzt auf die mit ROLLUP erstellten Summen zugreifen (PHP)?
"id_lagerort" "id_hersteller" "anzahl"
"1" "2" "3"
"1" "7" "5"
"1" "10" "3"
"1" \N "11"
"2" "1" "4"
"2" "5" "1"
"2" \N "5"
\N \N "16"
 
naja ist das nicht offensichtlich? wenn id_lagerort nicht null ist und id_hersteller ist null, dann hast du in dieser zeile die summe desjenigen lagerortes welcher in id_lagerort gespeichert ist. und wenn beide id's null sind dann handelt es sich um die totale summe über alle lagerorte. und wenn die frage mehr in die richtung geht, wie macht man das mit php, dann ist es wohl besser wenn du diese frage auch im php subforum stellst und nicht hier bei den datenbanken...
 
PS:
wenn es dir in PHP etwas hilft, du kannst die rows auch mit SQL markieren
SQL:
SELECT
case when  x.id_lagerort is null and x.id_hersteller is null then 2
when  x.id_lagerort is not null and x.id_hersteller is null then 1 else 0 end as type_of_sum,
x.id_lagerort,
x.id_hersteller,
x.anzahl
FROM
(SELECT
  id_lagerort,
  id_hersteller,
  SUM(anzahl) AS anzahl
FROM
  tl_textilien
GROUP BY
  id_lagerort,
  id_hersteller
  WITH ROLLUP) x
;
 

Neue Beiträge

Zurück