2013-04-21 101 views
0

從不同的表中調用時,我正在努力處理一些sql查詢。從具有相同ID的不同表中提取值

我試圖從2個表中得到一些結果。 在這種情況下,我想從user.id = 1獲取值,以及user.id = 1所遵循的用戶值。

但它總是結束了給我只能要麼全部具有相同follow_id礦石只能導致用戶從user.id = 1

我在想這樣的事情,但此查詢給出了空的結果。

SELECT 
user.email, user.username, tweets.message, tweets.date, userdetails.profile_img,   userdetails.firstname, userdetails.lastname, following.id, following.user_id, following.follow_id 
FROM user 
JOIN userdetails ON user.id = userdetails.user_id 
JOIN tweets ON userdetails.user_id = tweets.user_id 
JOIN following ON following.follow_id 
WHERE user.id = following.follow_id AND user.id = 1 

表。 正在關注 ID | user_id | follow_id

Tweets 
user_id|id|date|message 

user 
id|email|password|username 

userdetails 
id|firstname|lastname|profile_img|user_id|about 
+0

你的問題說「具有相同'follow_id'的用戶的價值」。跟什麼相同的'follow_id'?你能舉出一個數據和你想要的結果的例子嗎? – 2013-04-21 15:07:49

+0

@GordonLinoff與user.id相同的follow_id。 它就像一個微博應用程序即時創建學習目的。 因此,如果用戶2跟隨用戶1什麼。我將用戶1添加到follow_id – Dymond 2013-04-21 15:09:58

+0

有一點不清楚,你真的想在這裏,它是關於ID爲1的用戶的信息,還有關於所有用戶ID = 1? – 2013-04-21 15:10:24

回答

1
SELECT 
user.email, user.username, tweets.message, tweets.date, userdetails.profile_img,userdetails.firstname, userdetails.lastname, '' as id, '' as user_id, '' as follow_id 
FROM user 
JOIN userdetails ON user.id = userdetails.user_id 
JOIN tweets ON userdetails.user_id = tweets.user_id 
WHERE user.id = 1 
UNION ALL 
SELECT 
user.email, user.username, tweets.message, tweets.date, userdetails.profile_img,userdetails.firstname, userdetails.lastname, following.id, following.user_id, following.follow_id 
FROM user 
JOIN userdetails ON user.id = userdetails.user_id 
JOIN tweets ON userdetails.user_id = tweets.user_id 
JOIN following ON user.id = following.user_id and following.follow_id = 1 

該查詢將給出來自用戶1的所有推文。並且來自遵循用戶1的用戶的所有推文我相信。

+0

:)我只是嘗試完全相同,但它給了我只有來自用戶1的結果。沒有任何來自用戶的用戶1 :( – Dymond 2013-04-21 15:22:01

+0

Omg,我完全解釋它錯了 我應該從用戶獲取值.id = 1和用戶user.1的值如下 對不起。 – Dymond 2013-04-21 15:28:29

0

如果這是我的問題,我將開始我的故障排除與此查詢:

select count(*) 
from user 
where user.id = 1 

如果大於0返回的數量越多,我就那麼運行這個命令:

select count(*) 
from user u inner join userdetails ud on u.id = ud.id 
where u.id = 1 

然後,我會繼續添加其他位,一次一個,直到查詢返回0.當它確實,我會知道爲什麼。

+0

問題是我有查詢都返回user.id = 1和following.follow_id的值。 當它試圖將它們結合時,我得到零結果。 – Dymond 2013-04-21 15:17:12