我在mysql數據庫中有3個表。像組,成員,消息一樣。從不同表中選擇多行
組
| group_id | group_name | group_image
-------------------------------------------
| group_1 | First Group | group1.jpg
| group_2 | 2nd Group | group2.jpg
| group_3 | 3rd Group | group3.jpg
| group_4 | 4th Group | group4.jpg
| group_5 | 5th Group | group5.jpg
| group_6 | 6th Group | group6.jpg
消息
| sender_id | group_id | message | time
-----------------------------------------
| 001 | group_1 | first message | 2017-07-13 15:05:07
| 002 | group_2 | fifth message | 2017-07-13 15:04:07
| 002 | group_2 | third Message | 2017-07-13 15:03:07
GroupsMembers
| user_id | group_id
-----------------------------------------
| 001 | group_1
| 001 | group_2
| 002 | group_2
| 002 | group_1
| 002 | group_4
| 002 | group_6
我與這個問答嘗試uery
SELECT mmbr.group_id, grp.group_name, grp.group_image, msg.time, msg.message FROM `GroupsMembers` AS mmbr JOIN `Messages` AS msg ON msg.group_id =mmbr.group_id AND msg.time = (SELECT MAX(time) FROM `Messages` WHERE group_id = mmbr.group_id) JOIN `Groups` AS grp ON grp.group_id = mmbr.group_id WHERE mmbr.user_id = '002'
它給了我下面的結果: -
| group_id | group_name | group_image | time | message |
------------------------------------------------------------------------
| group_1 | First Group | group1.jpg | 2017-07-13 15:05:07 | first message
| group_2 | 2nd Group | group2.jpg | 2017-07-13 15:04:07 | fifth message
但我需要所有組用戶ID的'002'與消息或沒有。 東西像這樣: -
需要最後發送消息如果任何
| group_id | group_name | group_image | time | message |
------------------------------------------------------------------------
| group_1 | First Group | group1.jpg | 2017-07-13 15:05:07 | first message
| group_2 | 2nd Group | group2.jpg | 2017-07-13 15:04:07 | fifth message
| group_4 | 4th Group | group4.jpg | null | null
| group_6 | 6th Group | group6.jpg | null | null
你試過'LEFT JOIN'嗎? – jarlh
還沒有。感謝您的建議。讓我試試LEFT JOIN,然後我會在這裏更新。 –
謝謝@jarlh。 LEFT JOIN起作用。 –