После предыдущего вопроса ( Как выполнить этот запрос в Mysql? )
Допустим, у меня есть сообщение:
Id: 1, Message: This is a message
2 предмета:
Id:1, Subject: Math
Id:2, Subject: Science
Id:3, Subject: Numbers
И есть 2 записи message_subject_rel, которые идут:
Id: 1, message_id: 1, subject_id: 1
Id: 2, message_id: 1, subject_id: 2
Id: 3, message_id: 1, subject_id: 3
Я хотел сделать запрос, чтобы выбрать сообщения, которые содержали математику и естествознание в качестве тем, которые я в итоге использовал:
SELECT m.*
FROM messages m
JOIN message_subject_rel ms1 ON (m.id = ms1.message_id)
JOIN subjects s1 ON (ms1.subject_id = s1.id AND s1.subject = 'Math')
JOIN message_subject_rel ms2 ON (m.id = ms1.message_id)
JOIN subjects s2 ON (ms2.subject_id = s2.id AND s2.subject = 'Science');
Теперь очень ясно, что я хотел бы показать сообщение (потому что оно имеет эти 2 темы), а также сказать пользователю, что у него нет ТОЛЬКО этих 2 тем, но на самом деле есть 3, и не только что ... я хотел бы напечатать 3 темы (конечно, у меня есть много сообщений и я хотел бы фактически перечислить их, с их соответствующими темами только в 1 запросе). Я не могу понять, если это возможно на самом деле только с одним запросом, так как я бы получить n "субъект" поле в качестве возврата.
Есть идеи, если это можно сделать всего одним запросом, и если да, то как?
TY