Verschachtelte LEFT JOIN

ReinyBen

Benutzer
Beiträge
13
Hallo Zusammen,

wie mache ich eine SQL Abfrage mit zweimal indizieren?

Beispiel: Möchte bei einer Liste hinter jeder Betankung den Literpreis. In einer Tabelle ist den Autos die Kraftstoffsorte zugewiesen, in einer zweiten dieser der Preis:

Autos
MeinAuto Benzin
DeinAuto Diesel
AltesAuto Super

Sorten
Diesel 1,30
Benzin 1,40
Super 1,50

Betankungen
MeinAuto
DeinAuto
MeinAuto
AltesAuto
MeinAuto


Im Ergebnis der Abfrage soll dann hinter jeder Betankung der Literpreis stehen (das Ganze ist in Wirklichkeit komplexer, so dass wirklich zweimal nachgeguckt werden muss).

Danke für Eure Hilfe!

ReinyBen
 
Werbung:
Code:
edb=# create table sorten(name text primary key, preis numeric);
CREATE TABLE
edb=*# create table autos(name text primary key, sorte text references sorten);
CREATE TABLE
edb=*# create table betankungen(auto text references autos);
CREATE TABLE
edb=*# select b.auto, a.sorte, s.preis from betankungen b left join autos a on b.auto=a.name left join sorten s on a.sorte=s.name;
 auto | sorte | preis
------+-------+-------
(0 rows)

edb=*#

Dein Tabellendesign ist für die Tonne:

  • Autos können mehrere Sorten Kraftstoff tanken (Super, E10)
  • Preise sind nicht fix, sie sind an unterschiedlichen Tankstellen und zu unterschiedlichen Zeiten im Preise unterschiedlich
 
Werbung:
Danke für die Lösung!

Dein Tabellendesign ist für die Tonne:
  • Autos können mehrere Sorten Kraftstoff tanken (Super, E10)
  • Preise sind nicht fix, sie sind an unterschiedlichen Tankstellen und zu unterschiedlichen Zeiten im Preise unterschiedlich
Wie gesagt, es war nur als Beispiel gemacht. In Wirklichkeit geht es um Flugkraftstoffe und Mineralösteuer (und die ist pro Land fix).

VG ReinyBen
 
Zurück
Oben