Martin Hölter: Abfrage ohne Ergebnis einer anderen Abfrage(Access)

Hallo Welt!

Ich versuche, Access zu sagen, dass er mir alle Ergebnisse einer Abfrage anzeigt, deren Schlüssel nicht in einer anderen Abfrage auftaucht. Dies kriege ich auch mit Hilfe des "NOT IN"-Statements hin, allerdings dauert die Abfrage Ewigkeiten.
Ein MINUS, wie in </archiv/2003/6/t50432/> von Cheatah empfohlen wurde, scheint es bei Access nicht zu geben.

Geht das hier irgendwie performanter?

SELECT PERSONEN_NR, KUND_PRODUKT_NAME, LEGITIMATION_VERF  
FROM Softwarenutzer  
WHERE PERSONEN_NR NOT IN (SELECT PERSONEN_NR FROM [Softwarenutzer mit einem Konto])

Gruß aus Iserlohn

Martin

  1. Hallo

    Ich versuche, Access zu sagen, dass er mir alle Ergebnisse einer Abfrage anzeigt, deren Schlüssel nicht in einer anderen Abfrage auftaucht.

    Ich kenne jetzt nicht Access auswendig. Probiere es mal, indem du jedem Treffer der ersten Tabelle einen Eintrag aus der anderen Tabelle zufügst. Die Einträge mit NULL (kein Eintrag aus der ZWEITEN Tabelle) sind dein Ergebnis.

    MySQL:

    SELECT
      PERSONEN_NR
    ,KUND_PRODUKT_NAME
    ,LEGITIMATION_VERF
    FROM Softwarenutzer AS sft1

    LEFT JOIN Softwarenutzer AS sft2
    ON        sft2.id=sft1.id AND sft2.KONTO IS NOT NULL

    Kalle

  2. Hi !

    Geht das hier irgendwie performanter?

    SELECT PERSONEN_NR, KUND_PRODUKT_NAME, LEGITIMATION_VERF

    FROM Softwarenutzer
    WHERE PERSONEN_NR NOT IN (SELECT PERSONEN_NR FROM [Softwarenutzer mit einem Konto])

      
    Versuch's mal mit Indizes auf Personen\_nr und sonstige Number-Spalten Deiner Tabelle(n), über die Du auf weniger als 5% Deiner Daten zugreifst. Dadurch kannst Du schon mal die Laufzeit um einiges verkürzen.  
      
    Gruß  
      
    Hans