Rufen Sie Datensätze ab, die in der verbundenen Tabelle nicht vorhanden sind
P粉773659687
P粉773659687 2023-09-10 12:16:29
0
1
348

Ich habe drei Tabellen in einer MySQL-Datenbank. Die erste Tabelle enthält Benutzer und die zweite Tabelle enthält Projekte. Nachfolgend finden Sie die Struktur dieser beiden.

users
------
userid (int)
username (varchar)

items
------
itemid (int)
name (varchar)

Die dritte Tabelle ist die Join-Tabelle.

user_items
----------
userid (int)
itemid (int)

Ich möchte eine Abfrage, die eine Liste der Benutzer und der Projekte zurückgibt, die ihnen nicht zugewiesen sind.

Im Beispiel Ich habe folgende Benutzer

userid      username
1           john
2           tim
3           mark

Ich habe auch die folgenden Artikel

itemid      name
1           book
2           pen
3           backpack

In meiner Join-Tabelle

userid    itemid
1         1
1         3
2         1
2         2
2         3
3         2

Ich möchte also eine Liste der Elemente erhalten, die nicht dem Benutzer gehören, zum Beispiel:

userid    itemid
1         2
3         1
3         3

Was ist die beste Abfrage, um solche Ergebnisse zu erhalten? Ich versuche es mit einigen Left-Joins, Left-Outer-Joins, Left-Joins usw. ohne Erfolg.

Edit 1: Bisher habe ich folgende Abfragen ausprobiert:

SELECT con.userid, i.itemid FROM items i
LEFT JOIN (
SELECT u.id as userid, ui.itemid
FROM users u
INNER JOIN user_items ui ON u.userid = ui.itemid
) con ON i.itemid = con.itemid
WHERE con.itemid IS NULL

P粉773659687
P粉773659687

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!