2011-08-20 70 views
1

我有兩張由LEFT JOIN加入的表(照片,photos_details),我想加入第三張(收藏夾)以查看照片是否被加入。 這是當前的SQL查詢:在MySQL中加入三張表

SELECT photos_details.title, photos_details.description, photos.url 
FROM photos 
LEFT JOIN photos_details ON photos.photo_id = photos_details.photo_id 

收藏表基本上包含2列(主)ID和photo_id

你知道我能做到這一點?

感謝

+1

其他不僅僅是令人討厭並增加了右左邊加入後「加入上...收藏」部分...你想做?你想看看它是否曾被收藏過?多少收藏夾?我很困惑你的目標。 –

+0

我想知道這張照片是否已被收藏。 – SlimB

回答

4

LEFT JOIN對收藏表,並用CASE是否favorites.photo_id爲空,把它變成一個布爾TRUEFALSE如果照片有一個喜歡的決定。

SELECT 
    photos_details.title, 
    photos_details.description, 
    photos.url, 
    CASE WHEN favorites.photo_id IS NOT NULL THEN TRUE ELSE FALSE END as is_favorited 
FROM photos 
LEFT JOIN photos_details ON photos.photo_id = photos_details.photo_id 
LEFT JOIN favorites ON photos.photo_id = favorites.photo_id 

要獲得唯一最愛的照片,添加

WHERE favorites.photo_id IS NOT NULL 
+0

只是打我吧 – Taryn

+0

非常感謝。工程就像一個魅力:) – SlimB

+0

如何添加一個WHERE子句對付那個收藏?我嘗試在哪裏收藏= 1,但它沒有奏效。 說我想列出所有偏愛的圖片。 – SlimB