Ausgefallene Zughalte mehrerer Linien

domi5599

Neuer Benutzer
Beiträge
2
Ich will für ein Projekt die ausgefallenen Stationshalte von 11 Linien an einem Tag abfragen. Als Ausgang dient eine Tabelle, die für vier Tage alle Zugfahrten mit allen angefahrenen Halten auflistet. Als erstes habe ich alle geplanten Stationshalte pro Linie für den ersten Tag schon abgefragt. Jetzt frage ich mich wie ich die ausgefallenen Stationshalte abfrage?
Mein Ansatz ist, dass in der Abfrage nach den Zughalten gefragt wird für die keine Zeit hinterlegt wurde, wo die Züge also entweder nie ankamen oder nie abfuhren.
Abfrage für einen Tag mit geplanten Stationshalten
Code:
SELECT BTG, LIN, COUNT(*) AS Stationsanzahl_Plan
FROM ZUEGE_PLAN
WHERE BTG = CDATE("24.09.2013")
GROUP BY BTG, LIN
HAVING LIN="S4" OR LIN="S5" OR LIN="S6" OR LIN="S6" OR LIN="S7" OR LIN="S8" OR LIN="S9" OR LIN="S10" OR LIN="S11" OR LIN="S12" OR LIN="S13" OR LIN="S14"
ORDER BY COUNT(*) DESC;
 
Werbung:
Hrm, weiß nicht, ob ich Dich korrekt verstehe. Mal angenommen, es gibt die Stationen 1,2,3,4 und 5, und diese Züge sind gefahren:

Code:
test=*# select * from zuege ;
   datum    | station
------------+---------
 2019-04-25 |       1
 2019-04-25 |       2
 2019-04-25 |       3
 2019-04-25 |       5
 2019-04-24 |       1
 2019-04-24 |       2
 2019-04-24 |       4
 2019-04-24 |       5
(8 rows)

Heute z.B. ist der ICE mal wieder an Bielefeld vorbeigedonnert (Station 4). Dies können wir so abfragen:

Code:
test=*# select * from unnest(array[1,2,3,4,5]) as station left join (select * from zuege where datum = current_date) z  on station.station = z.station where datum is null;
 station | datum | station
---------+-------+---------
       4 |       |       
(1 row)

Das ist jetzt allerdings kein Access, sondern eine richtige Datenbank, PostgreSQL. Stimmt aber erst einmal das Resultat für Dich?
 
Das Resultat dürfte tatsächlich stimmen.
Ich versuch mal dein Vorschlag irgendwie in Access zu übertragen.
Schon mal Danke für die Hilfe.

Leider ist die Datenbank zu groß um sie hochzuladen.
 
Das läßt sich auch ganz klassisch mit einem Join lösen. Du nimmst die Planwerte und machst einen LEFT JOIN mit den Ist-Werten. Dann schließt du per WHERE-Klausel alle Datensätze aus zu denen Ist-Werte existieren, also die Haltestellen die tatsächlich angefahren wurden. Übrig bleibt logischerweise alles was geplant aber nicht angefahren wurde.
 
Werbung:
Natürlich aber auch dir dürfte klar sein das das sehr PG-spezifisch ist und er sich jetzt einen Wolf sucht nach Alternativen dabei braucht er doch nur einen Join.
 
Zurück
Oben