division in oracle

rambozola

Grünschnabel
Hi leute,

gegeben sind folgene relationen (siehe unten).

Ich würde gerne wissen warum ich auf die fragestellung
"Nennen sie alle Fluglinien(alles spalten) die nur mit Jet-Maschinen fliegen"
keine division in java machen kann?

Die würde folgendermaßen meiner meinung nahc aussehen:

select *
from fluglinie fl
where not exists (select *
from flugzeugtyp fzt
where antrieb = 'Jet'
and not exists(select *
from flug f
where f.flc = fl.flc
and f.ftyp = fzt.ftyp
)
);

Mir geht es nicht um die korrekte sql-anfrage auf die fragestellung(die hab ich).
es geht mir darum warum meine sql-query mit division hier nicht auf das korrekte ergebnis führt.

hat einer von euch da ne idee?


FLUG FLC FLNR SITZE FTYP
---- --- ---- ------ ----
AF 9 120 B737
AF 33
AF 45 310 A340
BA 7 120 B737
BA 82 310 A340
BA 84 300 B777
BA 86 250 B757
BA 88 120 B737
BA 90 50 F50
BA 92 390 B747
LH 5 120 B737
LH 6 120 B737
LH 7 120 B737
LH 8 120 B737
LH 20 50 F50
LH 24 50 F50
LH 32 220 A300
LH 34 380 B747
LH 36 310 A340
LH 40 120 B737
LH 42 120 B737
DL 5 120 B737
DL 7
DL 9 310
DL 33 310 MD11
JL 12 400 B747


FLUGZEUGTYP FTYP HERSTELLER ANTRIEB
----------- ---- ---------- -------- ------- ----------
A300 Airbus Jet
A340 Airbus Jet
B737 Boeing Jet
B747 Boeing Jet
B757 Boeing Jet
B777 Boeing Jet
F50 Fokker Turboprop
MD11 Boeing Jet

FLUGLINIE FLC LAND HUB NAME ALLIANZ
--------- --- ---- --- -------------------- -----------
DL USA LAX Delta Airlines Excellence
UA USA ORD United Airlines Star
AF F CDG Air France Excellence
LH D FRA Lufthansa Star
JL J NRT Japan Airlines
NH J All Nippon Airways Star
BA GB LHR British Airways
DI D Deutsche BA

(PD: Spalten in relationen sind ein bissi verrutscht...nicht beachten)
:?:
 
Hallo,

nach dem was Du schreibst, liefert der SQL das richtige Ergebnis und das Du ein Problem in Java hast
Ich würde gerne wissen warum ich auf die Fragestellung
"Nennen sie alle Fluglinien(alles Spalten) die nur mit Jet-Maschinen fliegen"
keine Division in Java machen kann?
Mir ist Dein Problem noch nicht klar. Kannst Du das Problem genauer beschreiben?
 
hi,

nein die sql anfrage mit dem doppelten "where not exists" liefert nicht das richtige ergebnis.

ich hab kein javaproblem.
ich vermute eher das man hier die division nicht anwenden kann,weil einige spalten "ftyp" in der relation "flug" null sind.
das sieht man leider nicht so schön hier im forum, da die spaltenformattierung irgendwie nicht hingehauen hat :-/
 
Hallo!

Ganz schön komplizierte Abfrage. So wie ich das sehe müsste die Abfrage keine Ergebnisse liefert. Stimmt das ? Wenn nein, poste doch mal das Ergebnis deiner Abfrage oder wenigstens einen Auszug davon, falls es zu groß ist.

Um das folgende etwas zu vereinfachen nenne ich die ganze Abfrage A1, die erste Unterabfrage A2 und die 2.Unterabfrage A3. Also lautet A2 bspw.
Code:
select *
from flugzeugtyp fzt
where antrieb = 'Jet'
and not exists A3
A3 liefert alle Flüge einer Fluglinie und eines Flugzeugtyps. (not exists A3) liefert also alle Flugzeugtypen zu einer Fluglinie zu denen es keine Flüge gibt.

A2 liefert alle 'Jet'-Flugzeugtypen zu einer Fluglinie zu denen es keine Flüge gibt. (not exists A2) liefert alle Fluglinien, bei denen alle 7 'Jet'-Flugzeugtypen mindestens einen Flug in dieser Fluglinie fliegen. Und das ist nicht das was du haben willst.

Mal sehen ob die Begründung hier irgendjemand noch versteht. Ob das fehlerfrei von mir ist, kann ich auch nicht garantieren, bei so einer Abfrage.
 
jepp es werden keine zeilen gewählt.

du meinst also die frage zur division würde lauten: nenne alle fluglinien die mit allen jet-maschinen fliegen?

und nicht wie gefragt "...die nur mit jet-maschinen fliegen?"

?
 
Zurück