我在使用MySQL中的某些条件从多个表中获取数据时遇到了问题。从mysql中的多个表中返回多个条件的数据
我已经follwing三个表:
Like Table
Like_id photoID userID
1 1 1
2 2 2
3 2 1
BookMark Table
bookmark_id photoID userID
1 1 1
2 2 2
3 2 1
Users Table
User_id Name Email
1 Max B [email protected]
2 Tom Smith [email protected]
条件:
起初,我要检查是否有从用户id = 2。如果没有在LIKE表中的任何数据数据应该返回“false”,否则应该返回“true”。
同样,我想检查是否有任何数据从BOOKMARK表userid = 2。如果没有数据它应该返回“false”,否则它应该返回“true”。
最后,我要来从用户表中的用户ID的姓名和电子邮件= 2
通缉:
我要实现所有这些信息在单个查询与上述三个表中的条件。
到目前为止已经试过与此查询:
select Like.Like_id from (Like left join Users on Like.userID = Users.User_id)
left join BookMark on Users.User_id = BookMark.bookmark_id
where Users.User_id = 2
随着@Gervs建议:
SELECT
u.user_id,
u.name,
u.email,
(CASE WHEN ISNULL(l.user_id) THEN 'false' ELSE 'true' END) AS 'likes',
(CASE WHEN ISNULL(b.user_id) THEN 'false' ELSE 'true' END) AS 'bookmarks'
FROM
users u
LEFT JOIN
likes l
ON u.user_id = l.user_id
LEFT JOIN
bookmarks
ON u.user_id = b.user_id
WHERE u.user_id = 2
GROUP BY u.user_id
会是怎样获取这些信息的最简单而有效的单个查询? 对于这些条件,VIEW将是最佳选择吗?
先进的感谢您的参与。
是的,这可以在一个完成查询。最简单的方法是将'LEFT JOIN' ** ** **添加到** Like **和** Bookmark **中,并将'NULL'解释为false。 – 2014-10-16 21:59:53
@ PM77-1谢谢。你可以请写在MySQL查询? – techhunter 2014-10-16 22:00:52
为什么至少不会尝试自己做? – 2014-10-16 22:02:01