/SQL: Wer hat was besucht?
Hansel
- datenbank
Tag,
folgendes Szenario: Gegeben sei ein Zoo mit mehreren Eingängen (Autoparkplatz, S-Bahn und Seilbahn); Zoodirektor Max Schnüffel möchte wissen, welche Attraktionen sich die Gäste anschauen, die über den Eingang Seilbahn kommen.
Der Zoo ist natürlich modernst nach Vorgaben des Sicherheitsbeauftragten Wolfgang Schnäuzle ausgestattet, an der Kasse werden Personalausweis, Reisepass und/oder Krankenkassenkarte per Funk ausgelesen und mit der ebenfalls RFID-bestückten Eintrittskarte verknüpft, diese wiederum an den Gehegen und Ständen ausgelesen. Sollte sich jemand an den schwulen Erdhörnchen Mohammed und Muselmann stören, wissen wir wenigstes, ob er mit dem Auto gekommen ist.
Wir haben folgende Tabelle:
Ließchen 11:51 Seilbahn-Kasse
Ließchen 11:53 Dromedare
Peterle 11:54 S-Bahn-Kasse
Ließchen 11:58 Streichelhühner
Peterle 12:03 Dschungeltoilette
Fritz 12:05 Seilbahn-Kasse
Peterle 12:07 Riesenschlange
Ließchen 12:08 Elefantenritt
Fritz 12:13 Breitmaulige Strandameisen
Peterle 12:14 Zuckerwatte-verkaufender Affe
Fritz 12:16 Bornesische Schlingelschlange
Dummerweise lässt sich nur der Vorname speichern, es kann also vorkommen, dass im Laufe des Tages mehrere Ließchens, Peterles und Fritzes in der Tabelle auftauchen. Auch ist der Ausgang nicht überwacht, dafür war kein Geld mehr da. Aber immerhin bleibt kein Gast länger als eine Stunde.
Frage: Ist es möglich, mit einer einzigen Zeile SQL den Weg der Gäste, die durch die Seilbahn-Kasse gekommen sind, herauszufiltern? In etwa so:
Ließchen 11:51 Seilbahn-Kasse
Ließchen 11:53 Dromedare
Ließchen 11:58 Streichelhühner
Ließchen 12:08 Elefantenritt
Fritz 12:05 Seilbahn-Kasse
Fritz 12:13 Breitmaulige Strandameisen
Fritz 12:16 Bornesische Schlingelschlange
Ich habe bislang nur einen Ansatz:
select gast,uhrzeit,attraktion from zoo where (gast,uhrzeit) in (select gast,uhrzeit from zoo where eingang="Seilbahn-Kasse")
Was offensichtlich fehlt, ist der Vergleich Besuch der Attraktion <= Seilbahn-Kasse-Uhrzeit + 1 Stunde. Bekommt man den da untergebracht?
Danke vielmals. Und bitte nicht die Meerschweine füttern, die sind so fett, dass sie ihr chen schon eingebüßt haben.
Tag,
folgendes Szenario: Gegeben sei ein Zoo mit mehreren Eingängen (Autoparkplatz, S-Bahn und Seilbahn); Zoodirektor Max Schnüffel möchte wissen, welche Attraktionen sich die Gäste anschauen, die über den Eingang Seilbahn kommen.
Der Zoo ist natürlich modernst nach Vorgaben des Sicherheitsbeauftragten Wolfgang Schnäuzle ausgestattet,
Is ja bitterböse... ;-)
<IRONIE>
Aber sowas löst man besser prinzipiell:
-- SET IRONIE = ON;
SET SERVEROUTPUT ON;
CREATE TRIGGER tr_grundrechte
AFTER INSERT ON t_wahlurne
FOR EACH ROW
BEGIN
IF :NEW.weiter_so = 'NEIN!' THEN
DELETE FROM t_aufpasser a
WHERE a.person_id IN
(SELECT p.id FROM t_personen p
WHERE p.is_fanatic = 1);
DBMS_OUTPUT.PUT_LINE('Fanatische Aufpasser pensioniert!');
END IF;
END;
/
SHOW ERROR;
INSERT INTO t_wahlurne(weiter_so) SELECT 'NEIN!' FROM DUAL;
-- SET IRONIE = OFF;
*SCNR*
Grüsse
Solkar
Grundlage für Zitat #1167.