2013-04-11 3 views
1

Я не могу понять, как сделать это SQL SELECT заявления ... Вот мои таблицы:комплекс SQL выберите

enter image description here

Я открыл таблицы озабоченных запроса

Так в основном I want to select the number of albums for each interpret. Я просто не могу понять это ... в настоящее время я думал, что мне нужно сделать свой первый выбрать на альбом, как:

select interpret.no_interpret, count(*) 
from album 
. 
. 
. 
group by interpret.no_interpret; 

и там работает от этого, но я не знаю, куда идти дальше.

+0

выберите interpret.no_interpret, граф (*) из альбома group by interp.no_interpret; – Fergus

+0

Как соотносятся таблицы 'album' и' interp'' **? Не могли бы вы назвать ключи «Первичный» и «Иностранный»? –

+0

кажется, что интерпретация относится к link_InterpretSong через NO_Interpret, Song to LInk_Interpret_song, хотя No_Song; но я не вижу, как No_Album относится к песне или интерпретации. Без этих знаний я не думаю, что кто-то мог помочь – xQbert

ответ

1

Я может быть что-то не хватает, но я не вижу прямого отношения из таблицы песни к альбому ..

Сначала я хотел бы, чтобы таблица link_interpret_song присоединилась к таблице композиций и получила количество отдельных альбомов. Однако я не видел, как выглядит столбец «No_Album» в списке полей таблицы. Я могу только догадываться, что он там связан с конкретным альбомом. Я видел средства массовой информации, но для меня это было бы похоже на ТИП СМИ (цифровой, загружаемый, виниловый, CD) и фактический идентификационный ключ, очевидный для таблицы альбомов.

Это говорит о том, что в таблице SONG есть такой столбец «No_Album».

select 
     LIS.No_Interpret, 
     COUNT(DISTINCT S.No_Album) 
    from 
     Link_Interpret_Song LIS 
     JOIN Song S 
      on LIS.No_Song = S.No_Song 
    group by 
     LIS.No_Interpret; 

Теперь, при этом, если вы хотите интерпретировать детали, возьмите вышеуказанные результаты и присоедините их к таблице интерпретации. Я сделал как подсчет различного альбомов и общее # песен просто как пример подсчета() против графа (отчетливый) контекста ... таких как

select 
     PreCounts.No_Interpret, 
     PreCounts.DistinctAlbums, 
     PreCounts.ActualSongs, 
     I.Name_Interpret, 
     I.First_Name, 
     I.Stage_Name 
    from 
     (select 
       LIS.No_Interpret, 
       COUNT(DISTINCT S.No_Album) as DistinctAlbums, 
       COUNT(*) as ActualSongs 
      from 
       Link_Interpret_Song LIS 
       JOIN Song S 
        on LIS.No_Song = S.No_Song 
      group by 
       LIS.No_Interpret) as PreCounts 
     JOIN Interpret I 
     ON PreCounts.No_Interpret = I.No_Interpret 
+0

да, я никогда не понимал, что я не связывал песню с альбомом, но я всегда считал само собой разумеющимся, что у меня был фокусный ключ альбом в песне. Я собираюсь исправить это и попробовать ваше решение. Спасибо! – AntoineLev

1

Вопрос неоднозначен, поскольку нет четкого указания того, как связаны таблицы. С учетом предположения об этих отношениях, ваш запрос, скорее всего, взять на себя что-то подобное следующей форме:

SELECT COUNT(distinct a.no_album) from album a, interpret i, song s 
where i.no_song=s.no_song 
and a.no_album=s.no_album GROUP BY i.no_interpret 
Смежные вопросы