Professional Documents
Culture Documents
4.Lab4 Отношения, знакомство с JOIN
4.Lab4 Отношения, знакомство с JOIN
4.Lab4 Отношения, знакомство с JOIN
Знакомство с join
select ... from <имя таблицы> [ [тип join] join <имя таблицы> on (<выражение>) ... ] ...
имя таблицы: имя таблицы | имя таблицы as алиас
тип join: inner | left; по умолчанию inner
Примеры
4.1 select * from category join event_type;
4.2 select * from event_type join category;
Отношения
Примеры
4.6
select * from feedback;
4.7
select * from feedback join event on (feedback.eventid = event.id);
4.8
select * from feedback
join event on (feedback.eventid = event.id)
join event_type on (event.type = event_type.id);
4.9
select * from feedback as f join event as e on (f.eventid = e.id) join event_type as t on (e.type =
t.id);
4.10
select t.title, count(*) c
from feedback as f
join event as e on (f.eventid = e.id)
join event_type as t on (e.type = t.id)
group by t.id
order by c desc;
Задание
4.11 Вывести соответствие каналов городам в виде: идентификатор города, название
города, идентификатор канала, название канала (таблицы: channel_to_city, city, channel).
Select * from city as c1 join city as c2 on (c1.id = c2.id) order by c1.population desc limit 10;
4.14 Переделать 3ий пример из темы “2.Подзапросы” с помощью JOIN.
select ch.title from channel as ch join channel_to_city as cht on (cht.channelId = ch.id) join city
as c on(cht.cityId=c.id) where c.name like "%Владивосток%"limit 10;
select ch.title, cat.title from channel as ch join category as cat on (ch.category = cat.id) where
cat.title like Спортивные or cat.title like Познавательные;
Типы JOIN
Примеры
4.19 select count(*) total, count(parent) children, count(parent is null or null) root from feature ;
4.21 select l1.*, l2.name from feature l1 join feature l2 on (l1.parent = l2.name);
4.22 select l1.*, l2.name from feature l1 left join feature l2 on (l1.parent = l2.name);
Задание
4.23 Какой глубины дерево в таблице feature? Как узнали? 2
4.24 Переделать задачу 2.5 с помощью JOIN. Вывести все “потерявшиеся” каналы, т.е.
каналы которые не относятся ни к одной из категорий перечисленных в таблице category.
Select ch.title, cat.id from channel as ch left join category as cat on (ch.category = cat.id) where
cat.id is null;