【发布时间】:2011-07-31 11:44:49
【问题描述】:
SELECT `users`.*
FROM (`users`)
JOIN `users_profiles` ON `users_profiles`.`user_id` = `users`.`id`
JOIN `albums` ON `albums`.`user_id` = `users`.`id`
JOIN `users_sites` ON `users_sites`.`user_id` = `users`.`id`
WHERE `users`.`id` = 4
这是我的问题。我在users、users_profiles、albums 和users_sites 中有数据。目前,我在四个单独的查询中获得了必要的数据,但我想使用JOINs 进行优化。
我的问题是返回的结果集仅包含来自users 表的一行数据(其中id 为4)。这是意料之中的,但我也想要其他表 JOINed 最后。
例如,users_profiles 包含我已确认包含设置为 4 的 user_id 的行。但从未将来自 users_profiles 的行添加到查询中,我所看到的只是来自 users 的内容。
有什么想法吗?其他表的情况相同 - 我已经确认它们应该被正确选择,但我不确定我做错了什么。
感谢您的帮助!
【问题讨论】:
-
即使没有相册,您是否想要为用户提供行?如果他们没有 users_sites 怎么办?您是否会为一个用户创建多个相册和多个 users_sites?
-
感谢您的提醒 - 刚刚在没有相册的用户上测试了(工作)版本,它返回 0 行。我已将查询的第 4 行更改为
LEFT JOIN以保留它。 -
我问是因为如果您同时允许多个相册和多个 users_sites,那么您可能无法通过此查询获得所需的内容。