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

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

Есть:



Должно быть:



Заранее благодарен!
...
Рейтинг: 0 / 0
Выборка из 4-х таблиц по одному ID
    #39318158
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
Выборка из 4-х таблиц по одному ID
    #39318233
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scorpion_2004,

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

+ кажется надо сделать entity_id as TID
...
Рейтинг: 0 / 0
Выборка из 4-х таблиц по одному ID
    #39318259
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Могу сильно ошибаться, но кажется как-то вот так подготовительные работы надо было проводить.
Код: 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
Выборка из 4-х таблиц по одному ID
    #39318273
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А потом уже как и было написано выше
Код: 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
Выборка из 4-х таблиц по одному ID
    #39318300
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
982183не увидел я там конечной уникальности ключевого поля в t0UNION же, а не UNION ALL.
...
Рейтинг: 0 / 0
Выборка из 4-х таблиц по одному ID
    #39318301
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точно. Увидел, понял, осознал.
...
Рейтинг: 0 / 0
Выборка из 4-х таблиц по одному ID
    #39318319
scorpion_2004
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftscorpion_2004,

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

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

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


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