Announcement

Collapse
No announcement yet.

SQL Abfrage Newbie

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

  • SQL Abfrage Newbie

    Hi,

    ich hatte noch nicht viel zu tun mit SQL und bin gerade am verzweifeln an einer wahrscheinlich ganz einfachen Abfrage. Ich habe 3 Tabellen mit Kundennummer (ist jedoch nicht unbedingt ein Primärschlüssel da einige mehrfachvorkommen)
    In Tabelle A befinden sich ca.900 Einträge in B 400 und in C 50. Jetzt will ich das alle Kundennummern angezeigt werden die in A sind aber nicht in B und nicht in C.
    Muss leider Access verwenden, kann dort ja aber trotzdem SQL Befehle eingeben.

    Code:
    SELECT A.Kundennummer
    FROM A
    WHERE A.Kundennummer NOT IN (SELECT Kundennummer FROM B)
    AND A.Kundennummer NOT IN (SELECT Kundennummer FROM C)
    Das ist wahrscheinlich total schelcht, aber so hab ich es probiert und Access hängt sich auf, da er in eine Art Endlosschleift kommt. Es findet pro Kundennummer über 900 Ergebnisse??!?!?!?

    Ich hoffe ich habe mich einigermaßen verständlich ausgedrückt
    Schon jetzt besten Dank für eure Hilfe!

  • #2
    Hallo MarkD,

    etwas in etwa vergleichbares hatten wir kurz vorher hier schon, siehe
    http://entwickler-forum.de/showthread.php?t=53222

    In Deinem Fall könntest Du es wie folgt abwandeln & ausprobieren:
    [highlight=SQL]SELECT A.Kundennummer
    FROM A
    LEFT JOIN B ON A.Kundennummer = B.Kundennummer
    LEFT JOIN C ON A.Kundennummer = C.Kundennummer
    WHERE B.Kundennummer IS NULL
    AND C.Kundennummer IS NULL[/highlight]
    Setzt für eine gute Performance aber auch einen Index auf "Kundennummer" in allen 3 Tabellen voraus.
    Olaf Helper

    <Blog> <Xing>
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich

    Comment


    • #3
      Hallo O. Helper,

      Danke für die schnelle Hilfe, jedoch bekomme ich bei dieser Abfrage einen Syntax Fehler --> Fehlender Operator
      Mit nur einem Join bekomme bekomme ich keinen Fehler...

      Comment


      • #4
        Ach, ja, das dumme Access hätte gerne das ganze etwas geklammert; wozu auch immer.
        Das hier funktioniert dann jedenfalls:

        [highlight=SQL]SELECT A.Kundennummer
        FROM (A
        LEFT JOIN C ON A.Kundennummer = C.Kundennummer)
        LEFT JOIN B ON A.Kundennummer = B.Kundennummer
        WHERE (B.Kundennummer Is Null)
        AND (C.Kundennummer Is Null);
        [/highlight]
        Olaf Helper

        <Blog> <Xing>
        * cogito ergo sum * errare humanum est * quote erat demonstrandum *
        Wenn ich denke, ist das ein Fehler und das beweise ich täglich

        Comment


        • #5
          Vielen Dank für die abermals schnelle Antwort!

          Hier jetzt mal mein Code mit den tatsächlichen Tabellen Namen.

          Code:
          SELECT BWAuswertung.Kundennummer
          FROM (BWAuswertung       
          LEFT JOIN Kueb.Kundennummer ON BWAuswertung.Kundennummer = Kueb.Kundennummer)      
          LEFT JOIN Normalauskunft ON BWAuswertung.Kundennummer = Normalauskunft.Kundennummer
          WHERE (Normalauskunft.Kundennummer IS NULL)       
          AND (Kueb.Kundennummer IS NULL);
          SYNTAXFEHLER in der Joinoperation?!?! langsam ist es zum verzweifeln

          Comment


          • #6
            Das hättest Du auch selbst finden können:

            LEFT JOIN Kueb.Kundennummer ON

            Beim JOIN nur den Tabellen!
            Olaf Helper

            <Blog> <Xing>
            * cogito ergo sum * errare humanum est * quote erat demonstrandum *
            Wenn ich denke, ist das ein Fehler und das beweise ich täglich

            Comment


            • #7
              Funktioniert! Vielen Dank... wahrscheinlich muss ich mich bald schon wieder melden mit einer neuen Frage
              Aber erst bastel ich selber mal dran rum.

              Comment

              Working...
              X