Abfrage, Vergleich über 2 Tabellen

sipoh

Erfahrenes Mitglied
Moin,

ich stehe gerade auf dem Schlauch.

Ich habe 2 Tabellen:

t1:
idwert1wert2...
1.........

t2:
idt1idaccount...
11123...

Ich möchte gern, dass mir alle ids aus t1 ausgegeben werden, die nicht schon in t2 (t1id) in Verbindung mit "account" eingetragen sind.

Beispiel:

Account 123 bekommt die Daten von t1 mit der id 1 NICHT, weil dieser Account bereits in t2 in Verbindung mit t1id existiert.

Account 456 hingegen bekommt die Daten von t1 mit der id 1, weil dieser Account nicht in t2 in Verbindung mit t1id existiert.

Ich hatte bereits einen Ansatz, der aber nicht greift:

PHP:
SELECT 
t1.id
FROM
t1, t2
WHERE
t1.id != t2.t1id
AND
t2.account != '123'

Kann mir jemand helfen?
 
Es gibt mehrere richige Lösungen

LEFT JOIN und Subquery sind die Lösung
SQL:
SELECT	
	t1.id
FROM	
	t1 
	-- LEFT Join nimmt alle Daten aus t2 und nur passende aus t2
	LEFT JOIN (
		-- Subquery ruft alle aus t2 mit dem Account 123 ab
		SELECT	t2.t1id
		FROM	t2
		WHERE	t2.account = 123
	)	tt2
		ON t1.id = tt2.t1id
WHERE
	-- Nur diese nehmen, zu denen keine t2 gefunden wurde
	tt2.t1id IS NULL

Mit Subquery im WHERE
SQL:
SELECT	
	t1.id
FROM	
	t1 
WHERE
	t1.id NOT IN (
		SELECT	t2.t1id
		FROM	t2
		WHERE	t2.account = 123
	)
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge

Zurück