SQL, Join, Datensatz nicht vorhanden
simon
- datenbank
Hallo zusammen,
ich habe eine vielleicht etwas ungewöhnliche Frage, aber vieleicht kann mir jmd helfen. Ich habe eine mehrfach verkettete SQL Abfrage und versuche nun die Daten zu finden, in denen ein Join ein leeres ergebnis liefert.
Hier der Code:
SELECT DISTINCT ap.id AS idAP, ap.idUser, ap.workExampleType, ap.title, ap.subtitle, meta2.meta_value AS publishingDate, meta3.meta_value AS publisher, user.name, user.vorname
FROM ".$tabelle_1." ap
INNER JOIN ".$tabelle_2." meta
ON meta.idAP = ap.id
AND meta.meta_key = 'bestAP'
AND meta.meta_value = 'true'
INNER JOIN ".$tabelle_2." meta2
ON meta2.idAP = ap.id
AND meta2.meta_key = 'publishingDate'
INNER JOIN ".$tabelle_2." meta3
ON meta3.idAP = ap.id
AND meta3.meta_key = 'publisher'
INNER JOIN ".$tabelle_3." storageWatcher
ON storageWatcher.moduleSpecificID = ap.id
AND storageWatcher.module = 'arbeitsproben_images'
INNER JOIN ".$tabelle_4." user
ON user.id = ap.idUser
WHERE ap.status LIKE 'published'
AND ap.language LIKE 'de'
ORDER BY RAND()
LIMIT 5";
Genau genommen habe ich mit folgenden Zeilen das Problem: ~~~sql
INNER JOIN ".$tabelle_3." storageWatcher
ON storageWatcher.moduleSpecificID = ap.id
AND storageWatcher.module = 'arbeitsproben_images'
Ich möchte nun Datensätze, die KEINEN Eintrag in $tabelle\_3 haben. Nur wie frag ich das ab? Bin für Tipps und Ratschläge Dankbar.
- Simon
Hallo,
ich habe eine vielleicht etwas ungewöhnliche Frage, aber vieleicht kann mir jmd helfen. Ich habe eine mehrfach verkettete SQL Abfrage und versuche nun die Daten zu finden, in denen ein Join ein leeres ergebnis liefert.
Ich möchte nun Datensätze, die KEINEN Eintrag in $tabelle_3 haben. Nur wie frag ich das ab? Bin für Tipps und Ratschläge Dankbar.
a) mit einem Subselect statt einem Join
b) mit einem LEFT OUTER JOIN auf die Tabelle und dem Einsatz von ISNULL
siehe z.B.
</archiv/2011/2/t203216/#m1373597>ff
</archiv/2007/11/t161536/#m1050822>
Freundliche Grüße
Vinzenz
Super, Danke!
Hab es mit einem Subselect gelöst