[DBUEB] Aufgabe 8


Hi,

natuerlich teste ich das erstmal in SQLPlus - aber da geht ja immer alles! Auch deinen Klammervorschlag hatte ich probiert - der geht auch nicht - diesmal aber zur Laufzeit:

[09:27] siwahofe@faui04a:~/dbueb/aufgabe8$  java booking 
java.sql.SQLException: ORA-00920: invalid relational operator

        at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
        at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
        at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:573)
        at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1891)
        at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteDescribe(TTC7Protocol.java:830)
        at oracle.jdbc.driver.OracleStatement.doExecuteQuery(OracleStatement.java:2391)
        at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2672)
        at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:589)
        at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:527)
        at sqlj.runtime.ExecutionContext$OracleContext.oracleExecuteQuery(ExecutionContext.java:1585)
        at booking.main(booking.java:172)

Der Code dafuer ist:

#sql bcur = { SELECT booking_class_id FROM (((capacity INNER JOIN aircraft ON aircraft_id) INNER JOIN flight ON aircraft_id) INNER JOIN flight_intervals ON flight_number) WHERE flight_id=112694 };

Wo ist der Fehler?

Gruesse,
-Steppenwolf


grins sorry.

Erstelle doch einfach eine View und verwende die in Deinem Code - so dass Du keine Joins brauchst.

(So viel zum Thema Quick and Dirty)


Probier doch mal:

#sql bcur = { SELECT booking_class_id FROM (((capacity INNER JOIN aircraft ON capacity.aircraft_id = aircraft.aircraft_id) INNER JOIN flight ON flight.aircraft_id = capacity.aircraft_id) INNER JOIN flight_intervals ON flight_intervals.flight_number = flight.flight_number) WHERE flight_id=112694 };

Wenn das nicht geht join die halt einfach im WHERE…

Und du brauchst die Tabelle aircraft eigentlich nicht.


So habe ich das jetzt gemacht - obwohl ich das alles andere als schoen finde. Aber egal, es geht so.

Danke! Hatte wohl den Ueberblick verloren :]…

[13:33] siwahofe@faui04a:~/dbueb/aufgabe8$  java booking
Spamming flight_id 100238, available booking classes: 2, available passengers: 0
Spamming flight_id 100240, available booking classes: 2, available passengers: 0
Spamming flight_id 100242, available booking classes: 2, available passengers: 28
Bang! Flight completely spammed!
Spamming flight_id 100243, available booking classes: 2, available passengers: 0
Spamming flight_id 100244, available booking classes: 2, available passengers: 0
Spamming flight_id 100246, available booking classes: 2, available passengers: 37
Bang! Flight completely spammed!
Spamming flight_id 100247, available booking classes: 2, available passengers: 115
Spamming flight_id 100248, available booking classes: 2, available passengers: 115
Spamming flight_id 100249, available booking classes: 2, available passengers: 115
Spamming flight_id 100250, available booking classes: 2, available passengers: 115
Spamming flight_id 100251, available booking classes: 2, available passengers: 115
Bang! Flight completely spammed!
Spamming flight_id 100252, available booking classes: 2, available passengers: 115
Bang! Flight completely spammed!
...

Hehe haendereib


Ich habe so meine Probleme, wie ich booking.sqlj realisieren soll. Wie kann man die Buchungsklasse und einen Passagier zufällig auswählen? Und wie bestimmt ihr für welches Flugintervall gerade gebucht wird? Kann mir da jemand weiter helfen? Danke!


Spezifizier mal dein Problem bitte ein bisschen genauer - ich verstehe nicht ganz, wo dein Problem liegt.


Also vereinfacht gesagt ist mir der Lösungsweg nicht ganz klar. Und insbesondere wie man auf zufällige Werte (passenger_id, booking_class_id) kommen könnte und wie man flight_id behandelt. Wählt man flight_id auch zufällig aus oder arbeitet man die Liste aller möglichen flght_ids Schritt für Schritt ab. Ich hab mittlerweile auch schon eine Idee, fände es aber cool, wenn du mir evtl. verbal so ein paar Tipps geben könntest, um auch einfach zu sehen, ob ich komplett falsch liege. :slight_smile:


Ich behaupte, dass es hier kein richtig oder falsch gibt - so genau, wie die Aufgabenstellung ist, kann man Tausende verschiedene richtige Loesungen abgeben.

Ich iteriere ueber alle Flight_IDs, die ich zuspamme (siehe Output weiter oben), hole mir alle Passagiere, die noch fehlen, und alle Bookingclasses, die fuer den Flug zulaessig sind und suche dann zufaellig Kombinationen aus denen raus, die dann inserted werden. So lange, bis der Trigger zuschlaegt (-> naechster Flug), oder bis die Passagiere ausgehen…