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

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

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

делаете три джойна - по одному с каждым чайлдом
объединяете результаты через юнион алл
готово
...
Рейтинг: 0 / 0
16.08.2013, 12:29:28
    #38368799
headzero
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор из нескольких таблиц в которой есть ссылка
tanglir, спасибо
нужно делать лефт джоины, я правильно понял?
...
Рейтинг: 0 / 0
16.08.2013, 12:31:10
    #38368803
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор из нескольких таблиц в которой есть ссылка
headzero, зачем? обычные надо делать.
...
Рейтинг: 0 / 0
16.08.2013, 12:46:55
    #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
16.08.2013, 12:50:16
    #38368828
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор из нескольких таблиц в которой есть ссылка
видимо, я неясно выразился
"делаете три джойна - по одному с каждым чайлдом"= "в каждом джойне главная таблица соединяется только с одним чайлдом"
далее по тексту
...
Рейтинг: 0 / 0
16.08.2013, 12:51:33
    #38368830
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбор из нескольких таблиц в которой есть ссылка
А вообще судя по запросу вам для начала надо понять, что вообще делает джойн, а потом уже думать над написанием запросов, использующих эту конструкцию.
...
Рейтинг: 0 / 0
16.08.2013, 13:18:05
    #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
16.08.2013, 13:39:50
    #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
16.08.2013, 13:52:38
    #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
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выбор из нескольких таблиц в которой есть ссылка / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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