2011-08-20 71 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