我在使用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