Announcement

Collapse
No announcement yet.

if not exist???

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • if not exist???

    Hallo,
    ich bin nicht gerade Profi und suche deshalb eine Lösung für ein wahrscheinlich einfaches Problem. Über die Suchfunktion konnte ich leider nichts passendes finden.

    Ich habe die folgenden 2 Tabellen:

    1. Akte
    Felder: Akte_ID, Az

    2. Vorgang
    Felder: Vorgang_ID, Vorgang_Text, Akte_ID

    Wenn ich folgende Abfrage mache:
    select * from Akte, Vorgang where Vorgang.Akte_ID = Akte.Akte_ID

    erhalte ich z.B. folgendes Ergebnis:
    AID0001,AZ88801,VID002,einText,AID0001
    AID0001,AZ88801,VID005,zweiText,AID0001
    AID0001,AZ88801,VID042,dreiText,AID0001
    AID0001,AZ88801,VID003,vierText,AID0001
    AID0002,AZ88802,VID002,einText,AID0002
    AID0002,AZ88802,VID005,zweiText,AID0002
    AID0002,AZ88802,VID042,dreiText,AID0002
    AID0003,AZ88803,VID003,vierText,AID0003
    AID0003,AZ88803,VID002,einText,AID0003
    AID0003,AZ88803,VID042,vierText,AID0003
    AID0003,AZ88803,VID005,zweiText,AID0003
    AID0003,AZ88803,VID006,achtText,AID0003

    jetzt möchte ich aber eine Abfrage machen, welche mir nur die Akten liefert, in denen kein
    Vorgang mit der Vorgang_ID VID003 vorkommt.
    Also folgendes Ergebnis:
    AID0002,AZ88802,VID002,einText,AID0002
    AID0002,AZ88802,VID005,zweiText,AID0002
    AID0002,AZ88802,VID042,dreiText,AID0002

    Ich vermute, dass geht irgendwie mit if not exist, ich bekomme es aber nicht hin.
    Bin für jede Hilfe dankbar.


    Als weiteren Schritt würde ich dann gerne nur das jeweilige Feld Akte_ID ausgeben, aber nur einmal und nicht
    dreimal untereinander.


    Vielen Dank vorab für eure Hilfe

    Gruß

    Roland

  • #2
    LEFT JOIN und auf IS NULL prüfen.

    Code:
    SELECT Akte.Akte_id
    FROM Akte
    LEFT JOIN Vorgang
        ON Akte.Akte_id = Vorgang.Akte_id AND Vorgang.Vorgang_ID = 'VID003'
    WHERE Vorgang.Vorgang_ID IS NULL
    GROUP BY Akte.Akte_id
    Bei SQL-Code bitte beachten: Formatierung von SQL in Beiträgen

    Comment


    • #3
      Hallo,

      um semantisch korrekt zu sein sollte man auf das GROUP BY verzichten (es wird kein Aggregat gebildet) und stattdessen ein SELECT DISTINCT verwenden.

      Gruß Falk
      Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

      Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

      Comment


      • #4
        Hallo und Danke für die schnellen Antworten.

        Die Lösung von dibo33 funktioniert soweit ich das jetzt getestet habe sehr gut.
        (um Group by kümmere ich mich später)

        Jetzt hab ich aber noch folgendes Problem:
        Ich habe noch eine dritte Tabelle mit Namen WV und auch dort das Feld Akte_ID und ein weiteres Feld Bemerkung.

        Jetzt möchte ich dieses Feld Bemerkung natürlich auch noch angezeigt bekommen, erhalte aber bei folgender Abfrage:

        SELECT Akte.Akte_id,WV.Akte_id,WV.Bemerkung
        FROM Akte,WV
        LEFT JOIN Vorgang
        ON Akte.Akte_id = Vorgang.Akte_id AND Vorgang.Vorgang_ID = 'VID003'
        WHERE Vorgang.Vorgang_ID IS NULL AND Akte.Akte_id = WV.Akte_ID

        eine Fehlermeldung:
        "Illegal reference to correlation name Akte"

        Bitte nochmal um kurze Hilfe

        Gruß

        Roland

        Comment


        • #5
          Verabschiede dich von den varalteten Theta-Joins und nutze die explizite Join-Schreibweise.

          Das ist nicht nur übersichtlicher, sondern dadurch löst sich dein Problem auch noch in Wohlgefallen auf.

          http://dev.mysql.com/doc/refman/5.5/en/join.html
          ca. in der Hälfte.
          Bei SQL-Code bitte beachten: Formatierung von SQL in Beiträgen

          Comment


          • #6
            ...und bitte beachten: Formatierung von SQL in Beiträgen
            Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

            Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

            Comment

            Working...
            X