Помогите составить сложный sql запрос из 3 таблиц

Статус
В этой теме нельзя размещать новые ответы.

dandandan

Мой дом здесь!
Регистрация
7 Авг 2008
Сообщения
1.036
Реакции
292
есть три таблицы.


таблица model_ttx
колонки
id_sh id_mdl
1 1
1 2
2 1
id_sh ссылается на id в sh_ttx
таблица links_idd
колонки
id zag
3 бампер
4 жабо
5 капот

id ссылается на links_idd
таблица sh_ttx
колонки
id links_idd
1 3
2 4
3 5

Нужно зная id_mdl в model_ttx получить id_sh в model_ttx. П полученному id_sh получить соответствующие links_idd в sh_ttx. По полученным links_idd выбрать id и zag в links_idd . при этом значения zag должны быть уникальными
 
Код:
SELECT DISTINCT lI1.zag AS 'zag', mT1.id_sh AS 'id_sh', sT1.links_idd AS 'links_idd' FROM model_ttx AS mT1
INNER JOIN sh_ttx AS sT1
ON mT1.is_sh = sT1.id
INNER JOIN links_idd AS lI1
ON sT1.links_idd = lI1.id
WHERE mT1.id_mdl = 1
но тут учитываются поля которые присутствуют во всех таблицах, потому что используется inner join.
 
Код:
select  distinct links_idd.zag from model_ttx 
inner join sh_ttx On sh_ttx.ID = model_ttx.id_sh
inner join links_idd On links_idd.ID = sh_ttx.links_idd
where id_mdl = 1
Выбрать уникальные zag можно без id, с id если только группировать, но id будет 1 на все одинаковые zag
Код:
select  MAX(links_idd.ID), links_idd.zag from model_ttx 
inner join sh_ttx On sh_ttx.ID = model_ttx.id_sh
inner join links_idd On links_idd.ID = sh_ttx.links_idd
where id_mdl = 1
group by links_idd.zag
 
Друг предложил другой способ.
select distinct
li.id,
li.zag
from
model_ttx mt,
links_idd li,
sh_ttx st
where
mt.id_mdl=1 and
mt.id=st.id and
st.links_idd=li.id
проверено, тоже работает.
 
друг написал в короткой записи
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху