0

从不同的表调用时,我正在努力处理一些 sql 查询。

我试图从 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 | 用户 ID | follow_id

Tweets
user_id|id|date|message

user
id|email|password|username

userdetails
id|firstname|lastname|profile_img|user_id|about
4

2 回答 2

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 的用户的所有推文。

于 2013-04-21T15:20:16.393 回答
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。当它返回时,我会知道为什么。

于 2013-04-21T15:15:32.960 回答