2013-02-14 3 views
0

Я унаследовал старую базу данных SQLite, которую я не должен изменять (это требование). Есть много таблиц, но я остановлюсь на двух из них:Усовершенствовать текущий запрос SQLite

songs 
---------- 
song_id (primary autoincrement) 
group_id (external) 
title 
audio_file_path 
wasPurchased (boolean, 0/1) 

groups 
---------- 
group_id (primary autoincrement, related to songs group_id) 
group_name 

На данный момент приложение должно выполнить этот запрос:

SELECT song_id,title,audio_file_path,wasPurchased,G.group_name AS groupName, 
G.group_id AS groupId FROM songs AS S JOIN groups AS G ON S.group_id=G.group_id 
ORDER BY groupName DESC 

Есть ли способ, с тем же запросом, для получения количества различных G.group_id были заняты = 0?

Любая помощь приветствуется.

ответ

0
SELECT song_id,title,audio_file_path,wasPurchased, 
G.group_name AS groupName, G.group_id AS groupId, 
SUM (SELECT DISTINCT g.group_id 
     FROM yourtables/JOIN 
     WHERE wasPurchased = 0) as nb 
FROM songs AS S 
JOIN groups AS G ON S.group_id=G.group_id 
ORDER BY groupName DESC 

Не уверен, если это лучший способ (никогда не пытался избранным в сумме, но ...), но я думаю, что это поможет вам.

+0

Я нашел другое решение с подзапросом (как ваш) и без JOIN и SUM: 'SELECT COUNT (DISTINCT (group_id)) FROM песни WHERE purchase = 0) AS nb'. Ваше решение делает несколько другую вещь, поэтому, возможно, я объяснил, что мне не нужны. – ContentiousMaximus

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