2013-03-23 70 views
0

我想構建一個用戶配置文件,所以我從數據庫中顯示她所有的喜歡。 但我想看看有活動會話的用戶是否喜歡某些用戶配置文件喜歡。選擇一個ID與內部聯接

所以,表名是愛和結構是:

photo_id (int) 
nick  (varchar) 
date  (timestamp) 

照片表結構:

photo_id (int) 
path  (varchar) 
title (varchar) 
category (varchar) 
nick  (varchar) 
date  (timestamp) 

這是我如何裝盤辦查詢:

SELECT photos.photo_id 
FROM photos 
INNER JOIN loves ON loves.nick = 'userProfileName' 
WHERE loves.nick = 'userWithActiveSession' 
AND photos.photo_id = loves.photo_id 
ORDER BY loves.photo_id DESC 
LIMIT 100 

此查詢應返回所有具有活動會話的用戶喜歡的照片,以及來自專業人士的喜歡的照片文件請求的用戶。

loves table: 

nick   photo_id 
userProfile 26 
userProfile 1000 
userProfile 27 
userProfile 520 
userSession 26 
userSession 680 
userSession 1000 

所以查詢應返回只有兩photos_id(1000和26),因爲這兩個用戶已經喜歡上了同一個photo_id。

有沒有什麼辦法可以修改這段代碼來做我想做的事?

+1

「照片」的表格結構是什麼? – 2013-03-23 18:15:58

+0

你想要照片的照片ID **都**喜歡或**他們** **喜歡的照片的ID? – Geier 2013-03-23 18:17:52

+0

對不起,看看編輯過的帖子。 – 2013-03-23 18:18:39

回答

1

所以,你要通過X(photos.nick = X)擁有和由Y喜歡的所有照片?

SELECT photos.photo_id FROM photos INNER JOIN loves 
ON loves.photo_id = photos.photo_id 
WHERE loves.nick = Y AND photos.nick = X 
ORDER BY photos.photo_id DESC LIMIT 100 

如果您想通過X和Y,那麼你需要加入愛自己喜歡的照片,從表中的兩個副本photo_ids匹配對方,空調是一個表的缺口匹配X和其他的比賽Y.(見評論)

+0

不,我想獲得photo_id當用戶Y喜歡相同的photo_id用戶X – 2013-03-23 18:47:59

+0

是的,這是可能的嗎? – 2013-03-23 18:56:09

+0

你想找到X和Y都喜歡的photo_id嗎?那麼你必須加入對自己的愛。 'SELECT _a.photo_id FROM喜歡_a INNER JOIN喜歡_b ON _a.photo_id = _b.photo_id WHERE _a.nick = X AND _b.nick = Y' – atw13 2013-03-23 18:57:46

0

那部分看起來奇怪:

INNER JOIN loves ON loves.nick = 'userProfileName' 

應該不會是(假設在照片上表中的缺口場):

INNER JOIN loves ON loves.nick = photos.nick 

或者我沒有在這裏得到些什麼呢?

1

你可以得到photo_id沒有參加這樣的:

SELECT photo_id 
    FROM  loves 
    WHERE photo_id in (select photo_id from loves where nick = "userProfile") 
    AND  photo_id in (select photo_id from loves where nick = "userSession") 
    GROUP BY photo_id 
    ORDER BY loves.photo_id DESC 
    LIMIT 100 

DEMO HERE

+0

不適用於我! – 2013-03-23 18:28:28

+0

如果可以,請從表格中獲取一些示例數據並獲得所需的結果。編輯你的問題,並添加它們 – 2013-03-23 18:33:30

+0

我想從用戶配置文件中獲得「喜歡」,然後看看是否喜歡與登錄的用戶喜歡匹配! – 2013-03-23 18:33:31