2013-03-11 3 views
0

Я новичок в базах данных. Я организую музыку, используя mysqlite3. У меня есть ArtistName, SongTitle и AlbumTitle поля в таблице Music. Основная цель базы данных - запросить его и вернуть всех художников, которые имеют менее 3 песен.Структурирование базы данных, которая подсчитывает похожие записи

Для этого я думаю, что мне понадобится какая-то запись «количество песен», которая увеличивается каждый раз, когда я добавляю песню от того же исполнителя. Однако я не уверен, как создать динамическую запись. Я знаю ключевое слово AUTO_INCREMENT, которое имеет динамические свойства, которые я ищу, но не условное приращение.

Мысли?

ответ

1

Если я что-то в вашем запросе отсутствует, вы не нуждаетесь в songCount колонке, вы можете легко получить художников, которые имеют менее чем 3 песни, но используя следующий запрос:

select artistname 
from music 
group by artistname 
having count(SongTitle) <3 

Это вернет artistname для каждого художника, который имеет количество песен менее трех полных песен.

Затем, если вы хотите, чтобы расширить свое присутствие на этом, вы можете использовать следующее, которая будет возвращать все столбцы из таблицы music где художник имеет менее 3 песни:

select m1.* 
from music m1 
where exists (select artistname 
       from music m2 
       where m1.artistname = m2.artistname 
       group by artistname 
       having count(SongTitle) <3) 
1

Вам не нужно поле «count». Попробуйте это ...

SELECT ArtistName 
FROM Music 
GROUP BY ArtistName 
HAVING Count(ArtistName) < 3 

Это предполагает, что для каждой песни есть только одна запись.

Смежные вопросы