2012-04-15 2 views
0

Ich habe eine Tabelle namens Releases, Teil einer 'Musik' Datenbank. Die Tabelle besteht aus zwei Spalten; cd_id, band_idMySQL - Mehrere Werte mit einem angeforderten Wert

ich die cd_id und die Anzahl der Bänder für jede CD beteiligt auflisten möchten, wo zwei oder mehr band_id mit einem cd_id Wert zugeordnet sind.

Können Sie mir helfen, dies zu formulieren? Vielen Dank im Voraus.

Antwort

1

Dies ist ein Aggregat COUNT() mit einer HAVING Klausel:

SELECT 
    cd_id, 
    count(*) AS numbands 
FROM releases 
GROUP BY cd_id 
HAVING numbands >= 2 

Die COUNT(*) gekoppelt mit dem GROUP BY cd_id gibt die Anzahl der band_id pro cd_id, und um ein HAVING diese Veröffentlichungen mit 2+ band_id, zu begrenzen, Klausel spezifiziert numbands (der Alias, der dem Zählwert gegeben wird) >= 2.

Hinweis, dies setzt voraus, dass jede band_id nur einmal pro cd_id aufgeführt ist. Wenn das nicht der Fall ist, um einzigartige Bands pro CD zu bekommen,

COUNT(DISTINCT band_id) AS numbands 

statt COUNT(*) AS numbands verwenden.

1

Unter der Annahme, dass Freisetzungen nicht das gleiche Band listet zweimal für eine CD_ID

select CD_ID, count(*) 
from releases 
GROUP BY CD_ID 
HAVING count(*) > 1 
Verwandte Themen