phpbar.de logo

Mailinglisten-Archive

=?iso-8859-1?Q?Outer_Join_=FCber_3_Tabellen?=

Outer Join über 3 Tabellen

Harald Wopenka hwopenka@spar.at
Tue Dec 10 16:20:59 2002


This is a multi-part message in MIME format.

---------------------- multipart/mixed attachment
Hi MySQL-Freaks,

ich habe hier ein Problem an dem schon 2 Datenbank-Experten gescheitert
sind. Ich denke, dass es in MySQL einfach nicht geht - aber trotzdem möchte
ich es posten. Vielleicht gibts ja doch eine Lösung ohne views und
subselects...

Konkret geht es um ein Einkaufszentrum mit etlichen Shops. Jeden Monat
bekomme ich von diesen Shops die Anzahl der Kunden und die Umsätze in den
verschiedenen Steuerbereichen. Die Tabellen sehen so aus:

Tabelle SHOP:
int   id        Key
char  name      Name

Tabelle CHRONICLE:
int   tsid      Key
int   year      Erfassungsjahr
int   month     Erfassungsmonat
int   shopid    Key zu Shop
int   customers Anzahl der Kunden

Tabelle TAX:
int   rate      Steuersatz (0,10,20,etc.)
int   name      Bezeichnung der Steuer

Tabelle TURNOVERS:
int   tsid     Key zu Chronicle
int   taxrate  Steuersatz
int   amount   Umsatz bei diesem Steuersatz

Der Key in Turnovers ist tsid zusammen mit taxrate.

Ich brauche nun einen Select, der mir in JEDEM Fall die Liste der Steuern
gibt, unabhängig davon was in den anderen Tabellen steht. D.h. wenn ich die
Steuern 0, 10, 20 und 30 definiert habe, dann muss mein Resultset immer 4
Zeilen sein.

Dieser Select liefert mir die gewünschten Daten:

SELECT s.id, s.name, s.size, b.name, c.year, c.month, c.customers, r.rate,
t.amount, c.tsid
FROM branch b, tax r, turnover t,
shop s left outer join chronicle c on c.shopid = s.id AND c.year=2002 AND
c.month=11 AND s.id=40
WHERE s.branch = b.id AND t.taxrate=r.rate AND c.tsid = t.tsid
ORDER BY s.name, r.rate

Gibt es allerdings den angegebenen Shop nicht, kommt gar nichts zurück. Gibt
es zu einer Steuer keine Umsätze (also keinen Eintrag in der Steuertabelle)
dann fehlt diese Steuer in der Liste.

Ich hänge die Datenbank als ZIP an diese Message an. Vielleicht gibts ja
unter Euch einen Tüftler, der sich das Prädikant "MySQL-Genius" verdienen
will. Würde mich sehr freuen. BTW: Die Datenbank umzubauen ist keine
Option...

LG
Harry

---------------------- multipart/mixed attachment
Ein Dateianhang mit Binärdaten wurde geschreddert...
Dateiname   : shopping.zip
Dateityp    : application/octet-stream
Dateigröße  : 13293 bytes
Beschreibung: nicht verfügbar
URL         : http://lists.mushaake.org/pipermail/mysql-de/attachments/20021210/4785fead/shopping.obj

---------------------- multipart/mixed attachment--

-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive