我有這個疑問:MySQL中,加入多對多的關係查詢
SELECT
GROUP_CONCAT(DISTINCT
`persons`.`name`,
'[START_Name_END]',
`persons`.`id`,
'[START_Id_END]',
`persons`.`isteacher`,
'[START_IsTeacher_END]'
SEPARATOR '[START_ROWSEPERATOR_END]') AS persons_values,
`locations`.`name` AS locations_name,
`locations`.`id` AS locations_id
FROM `locations`
INNER JOIN `locations_persons` ON `locations_persons`.`location_id` = `locations`.`id`
INNER JOIN `persons` ON `persons`.`id` = `locations_persons`.`person_id`
GROUP BY `locations`.`id`
ORDER BY `locations`.`id`
之所以我用GROUP_CONCAT
是擺脫persons
表中的所有行,有在關聯表的參考,在同一列
我使用[START_Name_END], [START_Id_END]
稍後在我的代碼和[START_ROWSEPERATOR_END]
中拆分結果以確定它是同一行還是新的。
一切都工作得很好至今。
事情是如果locations
表中的任何一行沒有引用persons
表中的任何一行,我沒有在結果中獲得該行!
我認爲問題出在JOIN
,我應該用什麼來提取所有行,而不管該行是否在關聯表中有引用?
任何幫助將不勝感激!
請在您的查詢中添加換行符 –
您的代碼無法讀取。請格式正確。可能試試'LEFT JOIN'。 – Eric
我做到了,希望現在它更具可讀性! 傑夫的解決方案的工作,但我只是想知道它是否會導致在另一個場景中 – Niroda