我有3张桌子:
用户
ID
用户名
图片
ID
USER_ID
图像
user_follow
ID
USER_ID
follow_id
我试图让所有用户关注者(朋友)使用表用户的“用户名”和表“图片”中的“图片”
我的查询是:
"SELECT
u.username,
i.image
FROM users u, user_follow f, images i
WHERE f.user_id = 3 AND f.follow_id = u.id AND f.follow_id = i.user_id";
此查询仅在有图像时才返回关注者,如果没有,则返回任何内容。 我尝试执行查询以返回所有关注者,如果是具有此类的图像(images.user_id = user_follow.follow_id),则返回图像,如果用户在图像表中没有图像则返回空数组
是否可以获得
[0] => Array
(
[username] => 6666
[image] =>
)
[1] => Array
(
[username] => 3333
[image] => my.jpg
)
[2] => Array
(
[username] => 2222
[image] =>
)
答案 0 :(得分:1)
您将需要使用左外连接来处理'即使图像为空'条件。以下内容应该有所帮助:
SELECT
u.username
, i.image
FROM
users u
-- normal join of users and user_follow
INNER JOIN user_follow f on (u.id = f.follow_id)
-- include images if they exist, null otherwise
LEFT OUTER JOIN images i on (f.follow_id = i.user_id)
WHERE
f.user_id = 3
;
答案 1 :(得分:1)
您可以使用LEFT JOIN用户和图像表来获取具有图像的所有用户 尝试下面的代码,
select * from users u
left outer join images i on u.id = i.user_id
left join user_follow f on f.follow_id = u.id
where f.userid = 3
答案 2 :(得分:0)
虽然我不是100%确定我完全理解你想要的东西,但我理解你想要的方式是left join。
你有没有试过像:
SELECT u.username, i.image
FROM users u
LEFT JOIN images i
ON u.id= i.user_id