Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Zwei Tabellen auslesen [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Zwei Tabellen auslesen


 
andik2000
06-04-2002, 20:18 
 
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

 
KinNeko
07-04-2002, 12:29 
 
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

 
hand
07-04-2002, 12:38 
 
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.

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:43 Uhr.