Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Выборка данных! Срочно... спасибо!  [new]
mik_q3
Member

Откуда:
Сообщений: 13
Добрый вечер, помогите,пожалуйста оптимизировать, выборку

Необходимо вывести саму длинную песню исполнителя "Петя" (Имя исполнителя, название песни, длительность)
Связи между таблицами artist и songs нет.
Мой вариант немного громоздкий, но пока на ум ничего другого не приходит(((


Картинка с другого сайта.



select a.name as a1, ds.disk_id, s.name, duration  from Songs s 
	     inner join disk_songs ds       on ds.song_id = s.song_id 
	     inner join Disk d on d.disk_id = ds.disk_id
	     inner join Artist a      on d.art_id   = a.art_id
where a.name  = 'Petya' and duration = (

select max(duration) from  (
select duration from Songs s 
	     inner join disk_songs ds       on ds.song_id = s.song_id 
	     inner join Disk d on d.disk_id = ds.disk_id
	     inner join Artist a      on d.art_id   = a.art_id
where a.name  = 'Petya'
)tbl )
8 авг 15, 20:39    [17993723]     Ответить | Цитировать Сообщить модератору
 Re: Выборка данных! Срочно... спасибо!  [new]
ЦБ
Member [заблокирован]

Откуда:
Сообщений: 2773
mik_q3,

select top 1 a.name as a1, ds.disk_id, s.name, duration  from Songs s 
	     inner join disk_songs ds       on ds.song_id = s.song_id 
	     inner join Disk d on d.disk_id = ds.disk_id
	     inner join Artist a      on d.art_id   = a.art_id
where a.name  = 'Petya'
order by duration desc

но с учётом, что у тебя MySQL, так
select a.name as a1, ds.disk_id, s.name, duration  from Songs s 
	     inner join disk_songs ds       on ds.song_id = s.song_id 
	     inner join Disk d on d.disk_id = ds.disk_id
	     inner join Artist a      on d.art_id   = a.art_id
where a.name  = 'Petya'
order by duration desc limit 1 
8 авг 15, 21:20    [17993836]     Ответить | Цитировать Сообщить модератору
 Re: Выборка данных! Срочно... спасибо!  [new]
Doctormom
Member

Откуда:
Сообщений: 48
mik_q3,

Может как то так...
Select top 1 S.name, max (duration)
from Song S 
	inner join Disk_Song DS on DS.Song_ID = S.Song_ID
	inner join Disk D ON D.Disk_ID = DS.Disk_ID
	inner join Artist A ON A.art_id = D.Art_ID
where A. name = 'Petya'
group by S.Name
order by MAX (duraion) asc



но проверить не получается нет исходных данных
8 авг 15, 21:26    [17993852]     Ответить | Цитировать Сообщить модератору
 Re: Выборка данных! Срочно... спасибо!  [new]
mik_q3
Member

Откуда:
Сообщений: 13
Спасибо всем большое - помогли!
8 авг 15, 23:51    [17994269]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить