MySql: объединить три таблицы вместе - PullRequest
7 голосов
/ 08 июля 2011

Я хочу объединить три таблицы, как показано здесь:

merge three tables T1, T2 and T3 together

В основном я хочу включить элементы из всех трех таблиц T1, T2 и T3 и объединить их какпоказано в таблице результатов.Я пробовал что-то вроде этого:

SELECT T1.user, T2.tid, T2.name, T3.type, T1.mid
FROM T1
LEFT JOIN T2 ON T1.mid = T2.mid
LEFT JOIN T3 ON T2.tid = T3.tid
GROUP BY T1.user;

Но, похоже, это не сработало.Он показывает результаты, но только уникальные значения.В результате, если user равно johny, оно покажет только первое значение и проигнорирует второе, хотя оно должно быть в таблице результатов.

Есть ли что-то, что мне не хватает?

Ответы [ 3 ]

5 голосов
/ 08 июля 2011

Избавьтесь от части «Группировать по». Это должно исправить вашу проблему.

4 голосов
/ 08 июля 2011

Устранить GROUP BY.В этом запросе нет необходимости.

SELECT T1.user, T2.tid, T2.name, T3.type, T1.mid
FROM T1
LEFT JOIN T2 ON T1.mid = T2.mid
LEFT JOIN T3 ON T2.tid = T3.tid;
3 голосов
/ 08 июля 2011

Группа не нужна, если вы хотите видеть все результаты для каждого из пользователей.В противном случае он скроет некоторые строки и покажет только одну для каждого пользователя.

Первое присоединение к T1 Справа к T2, чем к левому Присоединение к T3.Это хорошая практика, если есть элемент из T1, который не имеет связи с элементом из T3, чтобы не показывать NULL-результат для полей T £.

SELECT T1.user, T2.tid, T2.name, T3.type, T1.mid
FROM T1
RIGHT JOIN T2 ON T1.mid = T2.mid
LEFT JOIN T3 ON T2.tid = T3.tid;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...