2014-02-08 50 views
0

我這樣做三個表去過的地方:加入到找到朋友

用戶

| ID |用戶名| img |

主鍵是ID,但用戶名是唯一鍵

映射

| ID |用戶名|地址|

主鍵是id。 包含已訪問的各種地圖(城市)用戶。

朋友

| ID | user_req | user_acc |狀態|

主鍵是id。 兩個用戶的朋友只有在狀態爲1


我需要的結果是我的朋友有地圖,所以像這樣的元組:

|用戶名| img |地址|

用戶名是我的朋友的用戶名

IMG是她的個人資料的圖像

地址是地址,他已訪問了

元組必須在地方也按照地圖表的ID降序排列。

我用來查找用戶的朋友的查詢是:

 SELECT * 
     FROM users 
     INNER JOIN friend ON (username = user_req) 
     WHERE (user_acc = ? AND status = 1) 
     UNION DISTINCT 
     SELECT * 
     FROM users 
     INNER JOIN friend ON (username = user_acc) 
     WHERE (user_req = ? AND status = 1) 

哪裏是我想找朋友的用戶。

有誰知道該怎麼辦?非常感謝

回答

1

額外加入地圖?

SELECT u.username, u2.img, m.address 
FROM friend f 
INNER JOIN users u ON f.user_acc = u.username 
INNER JOIN maps m ON u.username = m.username 
WHERE (f.user_req = ? AND f.status = 1) 
UNION DISTINCT 
SELECT u.username, u2.img, m.address 
FROM friend f 
INNER JOIN users u ON f.user_req = u.username 
INNER JOIN maps m ON u.username = m.username 
WHERE (f.user_acc = ? AND f.status = 1) 
ORDER BY m.id DESC 
+0

感謝您的回覆!當我運行你的查詢時,我得到以下錯誤**表'你'不存在**。當我用用戶替換你時,我在u2上遇到了一個問題.. :( – user3287827

+0

錯誤,oops。意思是把用戶表別名爲u。把你放進去,但忘了提及用戶。現在修復。 – Kickstart