2 Datenbanken richtig verknüpfen SUM ( Anfängerfrage )

buzzi

Grünschnabel
Hallo Leute,
ich habe eine kurze Anfängerfrage wie ich diese 2 Tabellen richtig verknüpfe!
Tabelle1:

id name
1 Artikel 1
2 Artikel 2
3 Artikel 3

Tabelle 2
id - artikel_id - amount
1 - 1 - 2
2 - 1 - 3
3 - 2 - 1
4 - 2 - 2


SO ich würde gerne die Summe von amount ausgeben

Artikel 1- 5
Artikel 2 - 3
Artikel 3 - 0

Das Problem ist wenn bei Artikel 3 nix drinsteht schaffe ich es nicht es trotzdem auszugeben!
habe es bisher so:
$sql = "Select name,SUM(amount) as gesamt,artikel_id from tabelle1,tabelle2 group by name,artikel_id
 
Hallo buzzi,

das Problem ist die Verknüpfung der Tabellen.
Um soetwas wie du beschrieben hast, erreichen zu können, nimmt man im Normalfall einen LEFT (OUTER) JOIN.
Dabei ist es egal, ob in der 2. (rechten) Tabelle entsprechende Datensätze vorhanden sind, zu denen Einträge in der 1. (linken) Tabelle existieren.

Bei der Aggregation, also der Summenbildung je Gruppe musst du bei fehlenden Datensätzen noch ein wenig extra Hand anlegen, damit wirklich "0" herauskommt.
Ich hab es im Beispiel mal mit COALESCE gemacht, falls du Oracle o.ä. verwendest wäre auch NVL() geeignet.

SQL:
select a.name,
       COALESCE(SUM(t2.amount),0) as gesamt 
  from artikel a left outer join tabelle2 t2 
    on a.id = t2.artikel_id 
 group by name;

Markus
 
Zurück