2013-11-04 12 views
0

SQL:http://www.sqlfiddle.com/#!2/0f7a0d5/4如何選擇數據庫MySQL的待處理的交友請求

表包含這些行:

INSERT INTO `friends` (`asker_user_id`, `asked_user_id`, `status`) VALUES (1,2,1); 
INSERT INTO `friends` (`asker_user_id`, `asked_user_id`, `status`) VALUES (2,1,1); 
INSERT INTO `friends` (`asker_user_id`, `asked_user_id`, `status`) VALUES (3,2,1); 

此查詢選擇當前用戶的雙向朋友:

SELECT f1.asked_user_id AS friend_id 
     FROM friends AS f1 JOIN friends AS f2 
     ON f1.asked_user_id = f2.asker_user_id 
     AND f1.asker_user_id = f2.asked_user_id 
    WHERE f1.status = 1 AND f2.status = 1 
    AND f1.asker_user_id = 2 

所以結果爲1.因爲用戶2只有用戶1作爲雙向朋友。

如何顯示用戶2的掛起請求?用戶2在何處被ask_user_id?

THis(3,2,1)是用戶2的未決請求。其中3問2是朋友。爲了讓他們成爲雙向朋友,將會創建新的條目(2,3,1)。

+0

什麼是peding?狀態不是1? –

+0

BTW'f1.asker_user_id'應該在'WHERE'子句中。 「ON」應該只包含表之間的關係(除了在外連接中,在某些情況下可能需要單表條件)。 – Barmar

+0

@FilipeSilva沒有掛起狀態是當條目不存在時。 –

回答

1

你可以peding請求下列要求:

SELECT f1.asker_user_id AS friend_id 
FROM friends AS f1 
LEFT JOIN friends AS f2 
    ON f1.asked_user_id = f2.asker_user_id 
    AND f1.asker_user_id = f2.asked_user_id 
WHERE f1.status = 1 AND f2.status IS NULL 
AND f1.asked_user_id = 2 

sqlfiddle demo

+0

你能幫我解決嗎? http://stackoverflow.com/questions/19774587/making-a-sub-query-on-query-results –

+0

這是我再次困擾你:)我試圖讓待處理的請求用戶列表相同。上面的查詢完美地工作,但是我需要像單詞和用戶頭像和姓氏一樣的信息,就像在其他文章中一樣。我在這裏試過:http://www.sqlfiddle.com/#!2/0f7a0d5/54我複製了左連接和IS NULL。實質上f1.asker_user_id = 2應該導致用戶3,因爲那個用戶正在等待用戶2. –

+0

您應該爲此打開一個不同的問題。既然你現在想要的東西不同於原來的問題,但你肯定是在正確的軌道上。你可以在新的中引用這個問題來說它是基於這個問題的。並解釋新的要求 –

0

這是你找什麼?

這將顯示誰願意交朋友用戶2的用戶,所以用戶2有2個未決請求

SELECT f1.asker_user_id AS friend_id 
FROM friends AS f1 
WHERE f1.status = 1 
AND f1.asked_user_id = 2 

demo

相關問題