2013-04-21 66 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