Zwei Tabellen auslesen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Zwei Tabellen auslesen

    Hallo mal wieder!

    Ich habe zwei Tabellen, mit je einer Spalte in der sich eindeutige Einträge befinden, z.B. Ländernamen.
    Jetzt kann es sein, dass in der zweiten Tabelle andere Länder drin sind als in der ersten, aber auch gleiche.
    Wenn ich nun alle Länder der beiden Tabellen listen möchte, aber keine doppelten dabei haben will, wie sieht dan meine Select-query aus?

    Gibt es so was:
    SELECT * FROM db2 WHERE not in db1

    Gruß&Dank,
    der Andi

  • #2
    SELECT DISTINCT * FROM table1, table2

    Sollte eigentlich klappen..DISTINCT bewirkt dass doppelte Einträge nur einmal aufgelistet werden.

    Wenn du komplexere Anfragen stellen willst, wie zum z.B.
    Alle Länder die in Table1 aber nicht in Table 2 sind..
    ..solltest du dir das Kapitel 6.4.1.1 in dem MySQL Handbuch durchlesen

    Kommentar


    • #3
      Subselects werden erst für MySQL 3.24 angekündigt:

      SELECT * FROM tabelle1 WHERE id IN (SELECT id FROM tabelle2 WHERE feld = "X")

      Abfragen, die ein Subselect benötigen müssen mit Hilfe von JOINS realisiert werden, also:

      SELECT tabelle1.* FROM tabelle1, tabelle2 WHERE tabelle1.id = tabelle2.id AND tabelle2.feld = "X"

      Du möchtest ein NOT IN,

      SELECT * FROM tabelle1 WHERE spalte1 NOT IN (SELECT spalte2 FROM tabelle2)

      Mit JOIN würde diese Abfrage in etwa so lauten:

      SELECT tabelle1.* FROM tabelle1
      LEFT JOIN tabelle2 ON tabelle1.spalte1 = tabelle2.spalte2
      WHERE tabelle2.spalte2 IS NULL

      oder anstatt:

      SELECT * FROM tabelle1 WHERE spalte1 NOT EXISTS (SELECT spalte2 FROM tabelle2)

      mit JOIN

      SELECT tabelle1.* FROM tabelle1
      LEFT JOIN tabelle2 ON tabelle1.spalte1 = tabelle2.spalte2
      WHERE tabelle2.spalte2 IS NULL

      Dabei wird vorausgesetzt, dass tabelle2.spalte2 als NOT NULL deklariert ist.

      Kommentar

      Lädt...
      X