Я пытаюсь получить следующие данные из 3/4 таблиц в 1 Mysql query
, задаваясь вопросом, возможно ли это? Таблицы:Mysql Left join multiple 1 to many tables
TOPIC
topicid (FK)(PK)
groupid
topic
user
LIKED
likeid
topicid (FK)
user
COMMENT
commentid (PK)
topicid (FK)
comment
user
Я пишу свои темы и храпи в таблице TOPIC с уникальной тематикой. Я группирую каждую тему с помощью groupid. Другие таблицы могут содержать 0 или более данных для каждой темы.
Я пытаюсь получить каждую тему для конкретной группы, а также получить другие данные из соответствующих таблиц. Я проверил How to left join multiple one to many tables in mysql? и получил мало идей, но это для подсчета, в то время как я хотел получить информацию из этой таблицы (пользователи, которым нравится) и (пользователь и их комментарий).
Я попытался
SELECT t.topicid,
topic,
group_concat(DISTINCT likeid,l.user SEPARATOR '|'),
group_concat(DISTINCT commentid,comment,c.user SEPARATOR '|') AS comments
FROM TOPIC t
LEFT JOIN LIKE l ON l.topicid = t.topicid
LEFT JOIN COMMENT c ON c.topicid = t.topicid
WHERE t.groupid='some_value'
GROUP BY t.topicid
Хотя это работает частично, например, Я получаю детали, но только в том случае, если в группе есть одна тема. Если в группе есть две или более темы, то данные concat
хранятся только в первой записи, а в более поздних разделах нет комментариев и комментариев.
Может кто-то пожалуйста, помогите мне исправить это или какую-либо конкретную Mysql function
я отсутствующий
Я смущен. Вы присоединяетесь и группируетесь по теме. Затем вы жалуетесь, что несколько тем не получают несколько значений, когда они находятся в группе. Вы хотите сортировать по groupid? –
Не могли бы вы сделать sqlfiddle с образцами данных и показать, какой должен быть результат? – Barmar
@Barmar Я пробовал sqlfiddle в [link] (http://sqlfiddle.com/#!2/9ab57/1/0). –