Steffen: SQL Abfrage, Problem bei Formulierung

Hallöchen,

Ich versuche gerade eine Abfrage zu machen. Meine Datenbank besteht aus zwei Tabellen

Tabelle1
Name   Straße ID

Tabelle2
PLZ Nationalität ID

Die Tabelle2 ist eine art erweiterung für Tabelle eins. Sie sind durch die ID verknüpft.

Mein Problem ist, ich möchte gerade alle Werte aus Tabelle2 angezeigt bekomme die eine ID haben, die nicht mit der aus der Tabelle1 übereinstimmen.

Ich hab des so gemacht, aber ich bekomme keine Wert  zurück.

SELECT PLZ Nationalität, tabelle2.ID
FROM Tabelle2 INNER JOIN Tabelle1 ON Tabelle2.id = Tabelle1.ID
WHERE Tabelle1.ID != Tabelle2.id;

Was ist daran falsch!!! kann mir da jemand bitte einen Tipp geben..

  1. Hi!

    Tabelle1
    Name   Straße ID

    Tabelle2
    PLZ Nationalität ID

    Die Tabelle2 ist eine art erweiterung für Tabelle eins. Sie sind durch die ID verknüpft.

    Was genau versprichst du dir von dieser Aufteilung? Und wie realisierst du, dass beim Einfügen von Datensätzen in die eine Tabelle nicht bereits vorhandene IDs der anderen Tabelle versehentlich vergeben werden?

    Mein Problem ist, ich möchte gerade alle Werte aus Tabelle2 angezeigt bekomme die eine ID haben, die nicht mit der aus der Tabelle1 übereinstimmen.

    Das kannst du durch eine Selektion von Tabelle2 erreichen, der du per LEFT JOIN die Tabelle 1 anbindest. Du bekommst dann erst einmal grundsätzlich alle Datensätze aus Tabelle 2. Wenn es kein Pendant in Tabelle1 gibt, sind deren Felder NULL, also: ... WHERE Tabelle1.ID IS NULL

    SELECT PLZ Nationalität, tabelle2.ID
    FROM Tabelle2 INNER JOIN Tabelle1 ON Tabelle2.id = Tabelle1.ID
    WHERE Tabelle1.ID != Tabelle2.id;

    Was ist daran falsch!!! kann mir da jemand bitte einen Tipp geben..

    Daran ist falsch, dass du mit dem INNER JOIN nur die Datensätze ansprichst, die in beiden Tabellen enthalten sind. Mit der WHERE-Bedingung schließt du dann eben diese Datensätzt wieder aus. Der LEFT JOIN ist übrigens ein OUTER JOIN[*]. Solche Joins beziehen auch die außerhalb der Schnittmenge der beiden Tabellen stehenden Datensätze ein.

    [*] volle Bezeichnung: LEFT OUTER JOIN. Da LEFT und RIGHT immer nur bei Outer Joins auftreten, kann man das OUTER weglassen.

    Lo!

    1. Hi!

      Tabelle1
      Name   Straße ID

      Tabelle2
      PLZ Nationalität ID

      Die Tabelle2 ist eine art erweiterung für Tabelle eins. Sie sind durch die ID verknüpft.

      Was genau versprichst du dir von dieser Aufteilung? Und wie realisierst du, dass beim Einfügen von Datensätzen in die eine Tabelle nicht bereits vorhandene IDs der anderen Tabelle versehentlich vergeben werden?

      Mein Problem ist, ich möchte gerade alle Werte aus Tabelle2 angezeigt bekomme die eine ID haben, die nicht mit der aus der Tabelle1 übereinstimmen.

      Das kannst du durch eine Selektion von Tabelle2 erreichen, der du per LEFT JOIN die Tabelle 1 anbindest. Du bekommst dann erst einmal grundsätzlich alle Datensätze aus Tabelle 2. Wenn es kein Pendant in Tabelle1 gibt, sind deren Felder NULL, also: ... WHERE Tabelle1.ID IS NULL

      SELECT PLZ Nationalität, tabelle2.ID
      FROM Tabelle2 INNER JOIN Tabelle1 ON Tabelle2.id = Tabelle1.ID
      WHERE Tabelle1.ID != Tabelle2.id;

      Was ist daran falsch!!! kann mir da jemand bitte einen Tipp geben..

      Daran ist falsch, dass du mit dem INNER JOIN nur die Datensätze ansprichst, die in beiden Tabellen enthalten sind. Mit der WHERE-Bedingung schließt du dann eben diese Datensätzt wieder aus. Der LEFT JOIN ist übrigens ein OUTER JOIN[*]. Solche Joins beziehen auch die außerhalb der Schnittmenge der beiden Tabellen stehenden Datensätze ein.

      [*] volle Bezeichnung: LEFT OUTER JOIN. Da LEFT und RIGHT immer nur bei Outer Joins auftreten, kann man das OUTER weglassen.

      Lo!

      Okey danke des Problem hab ich gelöst :)

      Mhh ein neues Problem, ich habe jetzt die Ausgabe dieser Abfrage aber es sind halt umd ie 120 datensätze.

      Kann man des iwie so machen, dass man auf der ersten seite 30 sätze hat und dann mit nem pfeil oder so die nächsten 30 sätze bekommt.

      Also hab mich erkundigt und es hieß mit Limit aber wie soll ich des mit meiner Ausgabe kombinieren. (bzw mit meiner Abfrage)

      In der Abfrage steht dann ja ganz unten Limit 0,20, das heißt das er bei dem ersten Daten anfängt und bei 20 aufhört, nun wie soll ich des dann mit den pfeilen umsetzen, oder kann man des auch noch irgendwie anders machen.

      Meine Ausgabe

      while ($datenarray = mysql_fetch_array($ergebnis, MYSQL_ASSOC))
                               {

      printf ("

      <td>
                                                  Text
                                           </td>
                                      ",

      $datenarray["Name"], $datenarray["id"]);

      1. Hi!

        Bitte zitiere nur die Stellen, auf die du dich konkret beziehst, und nicht das komplette Vorposting. Danke.

        In der Abfrage steht dann ja ganz unten Limit 0,20, das heißt das er bei dem ersten Daten anfängt und bei 20 aufhört, nun wie soll ich des dann mit den pfeilen umsetzen, oder kann man des auch noch irgendwie anders machen.

        Dem Scriptaufruf übergibst du einen Parameter, der angibt, welche Seite angezeigt werden soll. Aus diesem berechnest du dann, die Limit-Werte. Leg dein Augenmerk dabei auch auf die Überpüfung der Einhaltung der Bereichsgrenzen. Die Blätter-Elemente schreibst du so, dass sie den Browser veranlassen, die Seite aufzurufen und dabei den Parameter zu übergeben, einmal um eins erhöht und einmal um eins verringert.

        Lo!

        1. Hi!

          Bitte zitiere nur die Stellen, auf die du dich konkret beziehst, und nicht das komplette Vorposting. Danke.

          In der Abfrage steht dann ja ganz unten Limit 0,20, das heißt das er bei dem ersten Daten anfängt und bei 20 aufhört, nun wie soll ich des dann mit den pfeilen umsetzen, oder kann man des auch noch irgendwie anders machen.

          Dem Scriptaufruf übergibst du einen Parameter, der angibt, welche Seite angezeigt werden soll. Aus diesem berechnest du dann, die Limit-Werte. Leg dein Augenmerk dabei auch auf die Überpüfung der Einhaltung der Bereichsgrenzen. Die Blätter-Elemente schreibst du so, dass sie den Browser veranlassen, die Seite aufzurufen und dabei den Parameter zu übergeben, einmal um eins erhöht und einmal um eins verringert.

          Lo!

          Also ich hab mal so en bisl rumgeschaut, und könnte man auch in der Abfrage den Limitwert einfach als variable machen,
          Limit '.$zaehler.', 30,

          dann in der Ausgabe, also in der while ausgabe einen zähler reinsetzen wo sich nach jeder wiederholung um einz erhöht, dann halt einen Link wo wieder auf die setie verweist mit der variablen

          also <a href="pbla.php?<?php echo $zaehler?>">

          und dann wird die variable rausgelesen und in der Abfrage verwendet,

          wäre des ne möglichkeit oder brauch ich des gar net zu versuchen...

          Danke für deine Hilfe

          1. Moin

            also <a href="pbla.php?<?php echo $zaehler?>">

            Also, erstens ist das der gleiche Mist den du in anderen Posts schon gefragt hast und 2. hälst du dich immer noch nicht an die Regeln dieses Forums. Ich gehe definitiv davon aus das du eine weitere Sockenpuppe bist.

            Und merke dir ein für alle mal: TOFU ist hier nicht erwünscht. Und das haben wir dir schon mehrfach gesagt

            Gruß Bobby

            --
            -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
            ### Henry L. Mencken ###
            -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
            ## Viktor Frankl ###
            ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
      2. Hallo,

        while ($datenarray = mysql_fetch_array($ergebnis, MYSQL_ASSOC))
                                 {
                                       printf ("
                                            <td>
                                                    Text
                                             </td>
                                        ",
                                       $datenarray["Name"], $datenarray["id"]);

        irgendwie kommt mir das bekannt vor :-(

        Befremdete Grüße

        Vinzenz

        1. irgendwie kommt mir das bekannt vor :-(

          zu Recht, das ist der selbe User, der unter mehreren Namen postet. Auch husche ist Steffen, Tibone oder Justus.

          Struppi.

          1. Hi!

            irgendwie kommt mir das bekannt vor :-(

            zu Recht, das ist der selbe User, der unter mehreren Namen postet. Auch husche ist Steffen, Tibone oder Justus.

            Was sagt Dir das? Kannst Du davon ausgehen, dass Diese User nicht einfach alle die gleichen Rechner(pool) fuer den Internetzugang benutzen?

            --
            "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
                  - T. Pratchett
            1. Jetzt z.B.? Waere ich eine Sockenpuppe?

              1. Jetzt z.B.? Waere ich eine Sockenpuppe?

                Nein

                Struppi.

            2. Was sagt Dir das? Kannst Du davon ausgehen, dass Diese User nicht einfach alle die gleichen Rechner(pool) fuer den Internetzugang benutzen?

              Warum sollte ich das? Ich muss hier nichts beweisen, aber die Ähnlichkeiten der Postings wurden mehrfach festgestellt. Beim nächsten Posting wird sofort gelöscht.

              Struppi.

          2. irgendwie kommt mir das bekannt vor :-(

            zu Recht, das ist der selbe User, der unter mehreren Namen postet. Auch husche ist Steffen, Tibone oder Justus.

            Struppi.

            Nein eigentlich nicht, ich lass mich bestimmt net beschuldigen so en kääs zu betreiben, ich kann mir vorstellen wie nervig sowas ist, aber mit doppelpost oder sowas hab ich nix am hut, ich hab mir soger diese regeln durchgelesen...

        2. Hi!

          irgendwie kommt mir das bekannt vor :-(

          Waer ja mal toll, wenn die Leuts, sich gegenseitig sagen wuerden, dass wir hier ihre Hausaufgaben erledigt haben. Dann muessen wir nicht immer mehrfach die gleichen Probleme loesen...

          --
          "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
                - T. Pratchett
          1. Hi!

            irgendwie kommt mir das bekannt vor :-(

            Waer ja mal toll, wenn die Leuts, sich gegenseitig sagen wuerden, dass wir hier ihre Hausaufgaben erledigt haben. Dann muessen wir nicht immer mehrfach die gleichen Probleme loesen...

            Des sind keine hausaufgaben, des sind porbleme die ich durch recherieren auch nicht lösen kann

        3. Hallo,

          while ($datenarray = mysql_fetch_array($ergebnis, MYSQL_ASSOC))
                                   {
                                         printf ("
                                              <td>
                                                      Text
                                               </td>
                                          ",
                                         $datenarray["Name"], $datenarray["id"]);

          irgendwie kommt mir das bekannt vor :-(

          Befremdete Grüße

          Vinzenz

          des hab ich ja auch von nem vorheerigen Post, ich bin bestimmt net dieser futzi da

          aber die ausgabe fand ich trotzdem gut, befor ich nämlich was frage erkundige ich mich bei googel und dann schau ich so bei anderen posts rum

          1. des hab ich ja auch von nem vorheerigen Post, ich bin bestimmt net dieser futzi da

            Erstaunlich, dass ihr die gleiche IP habt und den gleichen Code verwendet. Da kommt diese Aussagen ein bisschen dünn.

            Struppi.

            1. des hab ich ja auch von nem vorheerigen Post, ich bin bestimmt net dieser futzi da

              Erstaunlich, dass ihr die gleiche IP habt und den gleichen Code verwendet. Da kommt diese Aussagen ein bisschen dünn.

              Struppi.

              hör mal Meister Struppi, die IP Adresse ändert sich bei unserem Rooter nach jeder neuen Internetverbindung und alle 30 min zur Sicherheit... Also erzähl mir net so ne gaudi...

              Ich will hier keinen zu nahe treten oder sonst was, ich habe lediglich ein Problem und wollte Hilfe, aber wenn man hier gleich so beschuldigt wird such ich mir lieber ein Forum wo man hilfreiche tipps bekommt und nicht darüber gestritten wird was wer eventuell jemals gemacht hat.

              1. Hallöle!

                Ich habe jetzt mal ein Stückchen gelöscht, denn Struppi hat sich von dir provozieren und dazu hinreißen lassen, deine IP öffentlich zu machen. Das geht natürlich nicht.

                Fakt ist: Seit dem 07.08.2009 hast du an die 25 neue Threads zum selben Themenkreis eröffnet. Mit immer derselben IP (also nicht ähnlich oder so, nein, es war dieselbe). Diese IP wird einem Futtermittelhändler zugeordnet.

                Und ich sage dir jetzt in meiner Eigenschaft als Moderationsleitung folgendes: Ich sehe erstens nicht ein, dass harmlose Mitmenschen unter deinem Verhalten leiden müssen. Das sind einerseits die Teilnehmer, die dir immer wieder dieselben Informationen aus der Nase ziehen müssen, weil sie nicht mitbekommen haben, dass du dein "Problem" ja schon mehrfach an unterschiedlichen Tagen unter -zig Pseudonymen gepostet hast, andererseits arme, harmlose Mitmenschen, die sich mit einem ähnlich gelagerten Problem an das Forum wenden und sich unversehens einer Wand aus reiner Wut gegenübersehen, weil sie deinen Anschiß bekommen.[1] Zweitens sehe ich nicht ein, dass du keinen Rat annimmst, keine Bitte hörst und dich an absolut keine Regeln hältst.

                Ich werde mich folglicherweise mit den anderen Moderatoren besprechen und wir werden definitiv Maßnahmen ergreifen, denn es geht nicht an, dass du dich jeglicher Benimmvorschrift entziehst.

                File Griese,

                Stonie

                [1]Die IP können nämlich nur die Moderatoren einsehen, die übrigen Forumsteilnehmer nicht.

                --
                Mann, muß das schön sein, wenn man immer das letzte Wort hat!
                Und im Übrigen kennt auch Stonie Wayne.
                1. Hallöle!

                  Ich habe jetzt mal ein Stückchen gelöscht, denn Struppi hat sich von dir provozieren und dazu hinreißen lassen, deine IP öffentlich zu machen. Das geht natürlich nicht.

                  Fakt ist: Seit dem 07.08.2009 hast du an die 25 neue Threads zum selben Themenkreis eröffnet. Mit immer derselben IP (also nicht ähnlich oder so, nein, es war dieselbe). Diese IP wird einem Futtermittelhändler zugeordnet.

                  Und ich sage dir jetzt in meiner Eigenschaft als Moderationsleitung folgendes: Ich sehe erstens nicht ein, dass harmlose Mitmenschen unter deinem Verhalten leiden müssen. Das sind einerseits die Teilnehmer, die dir immer wieder dieselben Informationen aus der Nase ziehen müssen, weil sie nicht mitbekommen haben, dass du dein "Problem" ja schon mehrfach an unterschiedlichen Tagen unter -zig Pseudonymen gepostet hast, andererseits arme, harmlose Mitmenschen, die sich mit einem ähnlich gelagerten Problem an das Forum wenden und sich unversehens einer Wand aus reiner Wut gegenübersehen, weil sie deinen Anschiß bekommen.[1] Zweitens sehe ich nicht ein, dass du keinen Rat annimmst, keine Bitte hörst und dich an absolut keine Regeln hältst.

                  Ich werde mich folglicherweise mit den anderen Moderatoren besprechen und wir werden definitiv Maßnahmen ergreifen, denn es geht nicht an, dass du dich jeglicher Benimmvorschrift entziehst.

                  File Griese,

                  Stonie

                  [1]Die IP können nämlich nur die Moderatoren einsehen, die übrigen Forumsteilnehmer nicht.

                  Ich möchte mich recht herzlich bei allen Forenteilnehmer entschuldigen, mein Benehmen ist unentschuldbar, es wird nie wieder vorkommen.

                  Das ist auch mein letzter Beitrag in diesen Forum,

                  nochmals bitte ich vielmals um entschuldigung.

                  Gruß Steffen

                  1. Hallo,

                    Ich möchte mich recht herzlich bei allen Forenteilnehmer entschuldigen, mein Benehmen ist unentschuldbar, es wird nie wieder vorkommen.
                    Das ist auch mein letzter Beitrag in diesen Forum

                    wenn du dich wirklich an dieses Versprechen hältst, bin ich sogar bereit, auf eine erneute Rüge zu verzichten, weil du offensichtlich immer noch schwer von Begriff bist und schon wieder ein Fullquote produziert hast.

                    Und tschüss,
                     Martin

                    --
                    Verliebt:    Er spricht, sie lauscht.
                    Verlobt:     Sie spricht, er lauscht.
                    Verheiratet: Beide sprechen, und die Nachbarn lauschen.
  2. Hallo,

    Tabelle1
    Name   Straße ID

    Tabelle2
    PLZ Nationalität ID

    Mein Problem ist, ich möchte gerade alle Werte aus Tabelle2 angezeigt bekomme die eine ID haben, die nicht mit der aus der Tabelle1 übereinstimmen.

    wenn ich Dich richtig verstehe, möchtest Du alle Datensätze aus Tabelle2 haben, deren ID in Tabelle1 nicht auftritt.

    Ich hab des so gemacht, aber ich bekomme keine Wert  zurück.

    was nicht verwunderlich ist.

    » SELECT PLZ Nationalität, tabelle2.ID  
    
    > FROM `Tabelle2` INNER JOIN Tabelle1 ON Tabelle2.id = Tabelle1.ID  
      
    -- aus der Kombination jedes Datensatzes aus Tabelle1 mit jedem Datensatz aus  
    -- Tabelle2 möchtest Du nur die Datensätze haben, bei denen die Werte in der  
    -- Spalte ID übereinstimmen.  
      
    -- Das Ergebnis dieser Operation schränkst Du durch die Bedingung ein,  
      
    
    > WHERE Tabelle1.ID != Tabelle2.id;  
      
    -- dass die Werte in der Spalte ID unterschiedlich sein müssen.  
    
    

    Was ist daran falsch

    Wie können die Werte in der Spalte ID gleichzeitig gleich und gleichzeitig unterschiedlich sein?

    Nochmals zu Deinem Ausgangsproblem:

    Gib mir die Werte der Spalten
        PLZ,
        Nationalität
        und ID
    aus
        Tabelle2
    wobei mich nur die Datensätze interessieren
        deren ID
            nicht in der Liste der IDs aus Tabelle1 vorkommt.

    übersetzen wir eins zu eins in SQL:

    -- Gib mir die Werte der Spalten  
    SELECT  
        PLZ,  
        Nationalität,  
        ID  
    -- aus  
    FROM  
        Tabelle2  
    -- wobei mich nur die Datensätze interessieren  
    WHERE  
        -- deren ID nicht in  
        Tabelle2.ID NOT IN (  
            -- der Liste der IDs aus Tabelle1 vorkommt.  
            SELECT Tabelle1.ID FROM Tabelle1  
        )  
    
    

    oder nicht ganz so intuitiv mit einem OUTER JOIN und dem IS-NULL-Operator

    SELECT  
        t2.PLZ,  
        t2.Nationalität,  
        t2.ID  
    FROM  
        Tabelle2 t2  
    LEFT JOIN  
        Tabelle1 t1  
    ON  
        t2.ID = t1.ID  
    WHERE  
        t1.ID IS NULL  
    
    

    Die zweite Version funktioniert auch mit uralten MySQL-Versionen (sprich 4.0 und älter), die ich nicht mehr im produktiven Einsatz sehen möchte, da sie bereits seit Jahren tot sind, d.h. dass es keinerlei Sicherheitsupdates für bekannte kritische Fehler mehr gibt.

    Mehr zu Joins findest Du in unseren Datenbankartikeln zu den Joins:

    Freundliche Grüße

    Vinzenz

    1. Hallo,

      Tabelle1
      Name   Straße ID

      Tabelle2
      PLZ Nationalität ID

      Mein Problem ist, ich möchte gerade alle Werte aus Tabelle2 angezeigt bekomme die eine ID haben, die nicht mit der aus der Tabelle1 übereinstimmen.

      wenn ich Dich richtig verstehe, möchtest Du alle Datensätze aus Tabelle2 haben, deren ID in Tabelle1 nicht auftritt.

      Ich hab des so gemacht, aber ich bekomme keine Wert  zurück.

      was nicht verwunderlich ist.

      » SELECT PLZ Nationalität, tabelle2.ID

      FROM Tabelle2 INNER JOIN Tabelle1 ON Tabelle2.id = Tabelle1.ID

      -- aus der Kombination jedes Datensatzes aus Tabelle1 mit jedem Datensatz aus
      -- Tabelle2 möchtest Du nur die Datensätze haben, bei denen die Werte in der
      -- Spalte ID übereinstimmen.

      -- Das Ergebnis dieser Operation schränkst Du durch die Bedingung ein,

      WHERE Tabelle1.ID != Tabelle2.id;

      -- dass die Werte in der Spalte ID unterschiedlich sein müssen.

      
      > > Was ist daran falsch  
      >   
      > Wie können die Werte in der Spalte ID gleichzeitig gleich und gleichzeitig unterschiedlich sein?  
      >   
      > Nochmals zu Deinem Ausgangsproblem:  
      >   
      > Gib mir die Werte der Spalten  
      >     PLZ,  
      >     Nationalität  
      >     und ID  
      > aus  
      >     Tabelle2  
      > wobei mich nur die Datensätze interessieren  
      >     deren ID  
      >         nicht in der Liste der IDs aus Tabelle1 vorkommt.  
      >   
      > übersetzen wir eins zu eins in SQL:  
      >   
      > ~~~sql
      
      -- Gib mir die Werte der Spalten  
      
      > SELECT  
      >     PLZ,  
      >     Nationalität,  
      >     ID  
      > -- aus  
      > FROM  
      >     Tabelle2  
      > -- wobei mich nur die Datensätze interessieren  
      > WHERE  
      >     -- deren ID nicht in  
      >     Tabelle2.ID NOT IN (  
      >         -- der Liste der IDs aus Tabelle1 vorkommt.  
      >         SELECT Tabelle1.ID FROM Tabelle1  
      >     )  
      > 
      
      

      oder nicht ganz so intuitiv mit einem OUTER JOIN und dem IS-NULL-Operator

      SELECT

      t2.PLZ,
          t2.Nationalität,
          t2.ID
      FROM
          Tabelle2 t2
      LEFT JOIN
          Tabelle1 t1
      ON
          t2.ID = t1.ID
      WHERE
          t1.ID IS NULL

      
      >   
      > Die zweite Version funktioniert auch mit uralten MySQL-Versionen (sprich 4.0 und älter), die ich nicht mehr im produktiven Einsatz sehen möchte, da sie bereits seit Jahren tot sind, d.h. dass es keinerlei Sicherheitsupdates für bekannte kritische Fehler mehr gibt.  
      >   
      > Mehr zu Joins findest Du in unseren Datenbankartikeln zu den Joins:  
      >   
      > - [Einführung in Joins](http://aktuell.de.selfhtml.org/artikel/datenbanken/joins/)  
      > - [Fortgeschrittene Jointechniken](http://aktuell.de.selfhtml.org/artikel/datenbanken/fortgeschrittene-joins/)  
      >   
      >   
      > Freundliche Grüße  
      >   
      > Vinzenz  
        
        
        
      Vielen DAnk hab des jetzt mit LEFT JOIN gemacht. Ja ich weiß des hört sich da alles verwirrend an, aber ich kann in der Datenbank nur Tabellenhinzufügen. Also ich kann keine bestehenden Tabellen verändern
      
      1. übersetzen wir eins zu eins in SQL:

        [code lang=sql]-- Gib mir die Werte der Spalten
        SELECT
            PLZ,
            Nationalität,
            ID
        -- aus
        FROM
            Tabelle2
        -- wobei mich nur die Datensätze interessieren
        WHERE
            -- deren ID nicht in
            Tabelle2.ID NOT IN (
                -- der Liste der IDs aus Tabelle1 vorkommt.
                SELECT Tabelle1.ID FROM Tabelle1
        »»

        Des mit dem Sub-Select is aber auch ne gute idee, darauf wäre ich net so schnell gekommen :D danke nochmals