2017-02-05 5 views
0

Ich habe 2 SQL-Tabellen mit den folgenden Spalten:So wählen Sie Datensätze aus, die nicht in einer Tabelle in SQL vorhanden sind?

"Benutzer ": userid, Vorname, Nachname

" Aufträge": orderid, Benutzer-ID, Bestelldatum, shippingdate

Mir wurde gesagt, dass ich eine Verbindung verwenden kann, um zu erreichen, nach was ich suche, aber ich sehe nicht, wie eine Verbindung funktionieren würde.

Die Idee ist, alle Benutzer von "Benutzern" auszuwählen, die KEINE Bestellung aufgegeben haben; Benutzer, die keine Zeile in der Tabelle "orders" haben, wie von der Benutzer-ID definiert.

Das alles ist, ich habe so weit:

select users.userid, users.firstname, users.lastname, orders.* 
from users 
join orders on orders.userid = users.userid 

Aber das nur gibt Benutzer, die einen Auftrag vergeben DID. Wie würde ich darauf eingehen, um die Benutzer zu erreichen, die KEINE Bestellung aufgegeben haben? Nach dem, was ich verstehe, soll ein Join mehr Informationen erhalten, nicht deren Fehlen.

Einige Informationen: ich die neueste Version von HeidiSQL unter Windows mit 10.

+0

Ich benutze MySQL. –

+0

'links Join Aufträge auf orders.userid = users.userid wo orders.userid ist null' –

+1

Mögliche Duplikate von [SQL - Datensätze aus einer Tabelle finden, die nicht in einem anderen existieren] (http://stackoverflow.com/questions/367863/sql-find-records-from-one-table-which-dont-exist-in-another) –

Antwort

2

Sie brauchen nicht zu einem Join, dies zu tun, Do:

select * from users where userid not in (select userid from orders) 

können Sie LEFT JOIN auch:

SELECT * FROM users 
LEFT JOIN orders ON users.userid= orders.userid 
WHERE orders.users IS NULL 
+0

Aber hypothetisch, wenn ich einen Join verwenden müsste, wie würde das überhaupt aussehen? Und welche Art von Join ist das? –

+0

aktualisiert die Antwort –

+0

Vielen Dank! Ich werde als beste Antwort akzeptieren, um die Frage zu schließen. Du und Paul waren sehr hilfreich! –

Verwandte Themen