2013-08-24 3 views
0

Я пытаюсь получить следующие данные из 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 я отсутствующий

+0

Я смущен. Вы присоединяетесь и группируетесь по теме. Затем вы жалуетесь, что несколько тем не получают несколько значений, когда они находятся в группе. Вы хотите сортировать по groupid? –

+0

Не могли бы вы сделать sqlfiddle с образцами данных и показать, какой должен быть результат? – Barmar

+0

@Barmar Я пробовал sqlfiddle в [link] (http://sqlfiddle.com/#!2/9ab57/1/0). –

ответ

0

Я очень очень жаль тратить свое время, после тщательной повторной проверки я нашел мои данные таблицы были неправильными (проверено после внесения sqlfiddle спасибо @Barmar).

Я был ошибкой, введя неверные данные в таблицу похожих и комментариев. Так что Нравится и комментарии по 2-й теме topicid='2' из groupid='1' были вставлены по ошибке как topicid='1', поэтому детали только показали в 1-й теме, и ничего не вышло для второй темы.

SQL выше абсолютно корректен и благодарит за то, что помог мне найти ошибку. Чрезвычайно извините за публикацию снова.