Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка из 4-х таблиц по одному ID / 10 сообщений из 10, страница 1 из 1
29.09.2016, 20:52
    #39318147
scorpion_2004
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из 4-х таблиц по одному ID
Добрый вечер, уважаемые форумчане. Прошу у вас помощи.

Есть 4 таблицы, которые нужно соединить по одному полю (названия сводного поля у таблиц разные). Замечу, что количество записей во всех таблицах может быть тоже разным.

Есть:



Должно быть:



Заранее благодарен!
...
Рейтинг: 0 / 0
29.09.2016, 21:05
    #39318158
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из 4-х таблиц по одному ID
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select t1.name, t2.url, t3.license, t4.password
from (select tid from table1
      union
      select entity_id from table2
      union
      select entity_id from table3
      union
      select entity_id from table4
      ) t0
left join table1 t1 on t0.tid=t1.tid
left join table2 t2 on t0.tid=t2.entity_id
left join table3 t3 on t0.tid=t2.entity_id
left join table4 t4 on t0.tid=t2.entity_id
...
Рейтинг: 0 / 0
30.09.2016, 00:27
    #39318233
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из 4-х таблиц по одному ID
scorpion_2004,

А что, какой-то центральной/базовой таблицы нет? В любой из таблиц могут быть записи, для которых нет соответствующей записи в какой-то из других таблиц?
...
Рейтинг: 0 / 0
30.09.2016, 02:20
    #39318254
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из 4-х таблиц по одному ID
Ну так Akina и формирует сначала базовую таблицу.
Другое дело, что не увидел я там конечной уникальности ключевого поля в t0
Последующая группировка или distinct там бы не помешали.

+ кажется надо сделать entity_id as TID
...
Рейтинг: 0 / 0
30.09.2016, 02:38
    #39318259
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из 4-х таблиц по одному ID
Могу сильно ошибаться, но кажется как-то вот так подготовительные работы надо было проводить.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select distinct tid
from (select tid from table1
      union
      select entity_id as tid from table2
      union
      select entity_id as tid from table3
      union
      select entity_id as tid from table4
      ) 
into table t0
...
Рейтинг: 0 / 0
30.09.2016, 05:42
    #39318273
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из 4-х таблиц по одному ID
А потом уже как и было написано выше
Код: sql
1.
2.
3.
4.
5.
6.
select t1.name, t2.url, t3.license, t4.password
from  t0
left join table1 t1 on t0.tid=t1.tid
left join table2 t2 on t0.tid=t2.entity_id
left join table3 t3 on t0.tid=t2.entity_id
left join table4 t4 on t0.tid=t2.entity_id
...
Рейтинг: 0 / 0
30.09.2016, 07:53
    #39318300
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из 4-х таблиц по одному ID
982183не увидел я там конечной уникальности ключевого поля в t0UNION же, а не UNION ALL.
...
Рейтинг: 0 / 0
30.09.2016, 07:57
    #39318301
982183
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из 4-х таблиц по одному ID
Точно. Увидел, понял, осознал.
...
Рейтинг: 0 / 0
30.09.2016, 09:07
    #39318319
scorpion_2004
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из 4-х таблиц по одному ID
miksoftscorpion_2004,

А что, какой-то центральной/базовой таблицы нет? В любой из таблиц могут быть записи, для которых нет соответствующей записи в какой-то из других таблиц?

В том и дело, что нет. Это БД Друпала. Не могу вывести это все методами движка, то приходится "костылями". Получается, что все эти 4 таблицы объединяет тот id. Но плохо, что в первой названия поля отличается от других. В конце запроса мой модуль требует еще и ->fetchAllAssoc(''). Параметром ф-и как раз и должно выступать поле с id.
...
Рейтинг: 0 / 0
30.09.2016, 11:11
    #39318427
paver
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из 4-х таблиц по одному ID
Судя по содержанию, базовой таблицей является первая, содержащая объекты. Приседания с юнионом мне не понятны.

авторНо плохо, что в первой названия поля отличается от других
Вообще не проблема
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка из 4-х таблиц по одному ID / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]