SQL: Division mit doppelten not exists



  • Hallo, ich hab hier diesen EERM

    http://i105.photobucket.com/albums/m239/souljumper/erwin_log.jpg

    da gibts u.a. 3 Relationen Bussfahrer, Einsatzplan und Fahrten

    Ich soll nun eine SQL-Anweisung formulieren die mir diese Information liefert:
    Für welche Busfahrer gilt, dass es keine Linie gibt, die sie noch nicht gefahren sind?
    auf deutsch: welcher bussfahrer ist alle linien gefahren.

    nun weis ich, das ich hier mit dem doppelten not exists arbeiten muss, aber es kommt bei mir immer nur blödsinn raus

    Die SQL-Anweisung die bei meinem versuchen rausgekommen ist, ist diese hier:
    select mita_id from busfahrer b where not exists
    (select * from einsatzplan e where not exists
    (select * from fahrten f where f.fahrt_id = e.fahrt_id));

    leider werden mir auf diese weise alle bussfahrer ausgegeben, was nicht stimmt. Kann mir jemand sagen was ich falsch mache oder wie die anweisung dafür lauten muss?

    p.s.: falls die frage kommt, es handelt sich dabei um eine übungsaufgabe fürs studium, aber nach 2 stunden rumprobieren erlaub ich es mir trotzdem mal das internet um hilfe zu bitten



  • ich würde es so angehen:
    bring zuerst jeden busfahrer mit jeder linien, die er befahren hat, in verbindung. dazu brauchst du ein recht langes join über busfahrer (übrigens nur mit einem s), einsatzplan, fahrten und linie.
    dann groupst du darauf anhand des busfahrers und zählst die anzahl an verschiedenen linien, die er gefahren ist (du wirst dazu distinct brauchen). dann brauchst du nur mehr die busfahrer ausgeben, für die nicht die gesamtanzahl aller linien herausgekommen ist.



  • sorry. hab ich mich da verlesen.
    korrektur: du musst die busfahrer ausgeben, bei denen die gesamtanzahl mit der ermittelten anzahl an linien übereinstimmt.



  • ich brauch die lösung über ein doppeltes not exists, das mit dem zählen soll ich net nehmen



  • SChau dir mal Join an. Da gibt es was für dich.
    Stichwort: Alle Datensätze rechts die links nicht vorhanden sind.
    Bitte Doku durchackern.

    z.B. mal hier :
    http://www.sql-und-xml.de/sql-tutorial/tabellen-verknuepfen-mit-join.html
    oder
    http://www.aspheute.com/artikel/20001023.htm

    OUTER JOIN


Anmelden zum Antworten