2012-04-11 6 views
4
SELECT * FROM `image_appreciations` 
WHERE `image_id` IN(SELECT `id` FROM `images` WHERE `user_id` = '1') 

Ist meine aktuelle Abfrage, es gibt null ergibtSubquery innen "IN" Klausel

SELECT `id` FROM `images` WHERE `user_id` = '1' 

die Unterabfrage gibt um 8 ids ist, die zwei von ihnen in

SELECT * FROM `image_appreciations` 
WHERE `image_id` IN(77,89) 

gefunden und das funktioniert gut. Aber alles zusammen scheitert. Was mache ich falsch?

+0

Ihre Syntax mir korrekt aussieht ... Hier eine Referenz ist allerdings nur für den Fall http://beginner-sql-tutorial.com/sql-subquery.htm –

+1

überprüfen, ob 'id NICHT in IS NULL' Ihre Unterabfrage –

+0

@rs .: Warum würde das einen Unterschied machen? Wenn 'id' NULL ist, wird diese Zeile ignoriert. –

Antwort

6

Dies könnte mit JOIN erfolgen. Im Folgenden finden Sie ein Beispiel mit der impliziten Short-Hand-Syntax.

SELECT * FROM image_appreciations a, images i 
WHERE a.image_id = i.id AND i.user_id = 1 
+0

Funktioniert perfekt. Vielen Dank! Will akzeptieren, wenn es mir auch erlaubt :) – Harry

+0

realisieren, dass das Join-Konstrukt: FROM Table1, Table2 ist nicht der Standard heute verwendet – Leslie

+2

@Leslie Was ist der Standard, der heute verwendet wird? – Harry

4

Eine Unterabfrage wie diese sollte "funktionieren", seltsam das ist es nicht. Wie auch immer, Sie können versuchen, eine JOIN zu verwenden, um dies zu lösen.

SELECT * FROM `image_appreciations` 
JOIN `images` ON `image_id` = `id` 
WHERE `images`.`user_id` = '1'