powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выбор из нескольких таблиц в которой есть ссылка
10 сообщений из 10, страница 1 из 1
Выбор из нескольких таблиц в которой есть ссылка
    #38368790
headzero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня есть таблица parent и у нее FK - называется id
И есть несколько дочерних даблиц child1, child2, child3. Каждая из дочерних таблиц имеет ссылку на на parent.id. Внешний ключ называется parent_id.

Мне нужно выбрать все значения из parent и сджойнить их с child. Но именно с теми таблицами child, которые имеют ссылку на мой конакретный parent.
Помогите как сделать, плиз.

Тоесть грубо говоря нужно выбрать именно тут таблицу из списка (child1, child2, child3), которая ссылается на конкретный parent.
...
Рейтинг: 0 / 0
Выбор из нескольких таблиц в которой есть ссылка
    #38368797
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
headzero,

делаете три джойна - по одному с каждым чайлдом
объединяете результаты через юнион алл
готово
...
Рейтинг: 0 / 0
Выбор из нескольких таблиц в которой есть ссылка
    #38368799
headzero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir, спасибо
нужно делать лефт джоины, я правильно понял?
...
Рейтинг: 0 / 0
Выбор из нескольких таблиц в которой есть ссылка
    #38368803
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
headzero, зачем? обычные надо делать.
...
Рейтинг: 0 / 0
Выбор из нескольких таблиц в которой есть ссылка
    #38368824
headzero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir, Вот я делаю так
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SELECT * FROM field_base_fields FBF
JOIN field_drop_down_options FDO
ON FBF.`id` = FDO.`field_id`

JOIN field_check_box_options FCO
ON FBF.`id` = FCO.`field_id`

JOIN field_text_options FTO
ON FBF.`id` = FTO.`field_id`

JOIN field_radio_options FRO
ON FBF.`id` = FRO.`field_id`

WHERE FBF.`id` = '001c0d7d-d82e-48ff-a441-fdccbc51201b'



И не возвращает ни одной записи, хотя одна точно есть которая соответсвует FBF.`id` = '001c0d7d-d82e-48ff-a441-fdccbc51201b'
...
Рейтинг: 0 / 0
Выбор из нескольких таблиц в которой есть ссылка
    #38368828
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
видимо, я неясно выразился
"делаете три джойна - по одному с каждым чайлдом"= "в каждом джойне главная таблица соединяется только с одним чайлдом"
далее по тексту
...
Рейтинг: 0 / 0
Выбор из нескольких таблиц в которой есть ссылка
    #38368830
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вообще судя по запросу вам для начала надо понять, что вообще делает джойн, а потом уже думать над написанием запросов, использующих эту конструкцию.
...
Рейтинг: 0 / 0
Выбор из нескольких таблиц в которой есть ссылка
    #38368871
headzero
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
   SELECT FBF.`id`, FCO.id , FCO.`sort_order` FROM field_base_fields FBF  
   JOIN  field_check_box_options FCO
   ON FBF.`id` = FCO.`field_id`
   WHERE FBF.`id` = '02e2210f-df1b-43d9-8356-220d55d6ea83'
UNION 
   SELECT FBF.`id`, FDO.id, FDO.`sort_order` FROM field_base_fields FBF  
   JOIN field_drop_down_options FDO
   ON FBF.`id` = FDO.`field_id`
   WHERE FBF.`id` = '02e2210f-df1b-43d9-8356-220d55d6ea83'
UNION 
    SELECT FBF.`id`, FTO.id, FTO.`sort_order` FROM field_base_fields FBF  
    JOIN field_text_options FTO
    ON FBF.`id` = FTO.`field_id`
    WHERE FBF.`id` = '02e2210f-df1b-43d9-8356-220d55d6ea83'
UNION
    SELECT FBF.`id`,FRO.id, FRO.`sort_order` FROM field_base_fields FBF  
    JOIN field_radio_options FRO
    ON FBF.`id` = FRO.`field_id`
    WHERE FBF.`id` = '02e2210f-df1b-43d9-8356-220d55d6ea83'


tanglir, сделал так. Работает. Спасибо. Просто не знал что юнинон делает)
...
Рейтинг: 0 / 0
Выбор из нескольких таблиц в которой есть ссылка
    #38368897
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможен также вариант типа
Код: sql
1.
2.
3.
4.
5.
6.
select p.id, coalesce(c1.id, c2.id, ... cN.id, 'ваще нету')
from parent p
left join child1 c1 on p.id = c1.f_id
left join child2 c2 on p.id = c2.f_id
...
left join childN cN on p.id = cN.f_id


where p.fld = 'valuee'
...
Рейтинг: 0 / 0
Выбор из нескольких таблиц в которой есть ссылка
    #38368919
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT * 
FROM field_base_fields FBF
LEFT JOIN( -- {SET}CROSS JOIN{NULL}=>{NULL} 
  SELECT * FROM field_drop_down_options FDO WHERE FDO.`field_id`='001c0d7d-d82e-48ff-a441-fdccbc51201b' -- = FBF.`id`
  UNION ALL
  SELECT * FROM field_check_box_options FCO WHERE FCO.`field_id`='001c0d7d-d82e-48ff-a441-fdccbc51201b' -- = FBF.`id`
  UNION ALL
  SELECT * FROM field_text_options FTO WHERE FTO.`field_id`='001c0d7d-d82e-48ff-a441-fdccbc51201b' -- = FBF.`id`
  UNION ALL
  SELECT * FROM field_radio_options FRO WHERE FRO.`field_id`='001c0d7d-d82e-48ff-a441-fdccbc51201b' -- = FBF.`id`
)U ON U.`field_id`=FBF.`id`
WHERE FBF.`id` = '001c0d7d-d82e-48ff-a441-fdccbc51201b'
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выбор из нескольких таблиц в которой есть ссылка
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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