0

テーブルで最も繰り返される値をカウントしたいのですが、それはサブクエリで行われており、私の SQLyog はそのタイプのクエリをサポートしていません。以下は私のクエリです:

SELECT `band`.`band_id`,`member_id`,`member_name`,`contact_no`  
FROM seasons 
INNER JOIN programs_recorded ON  programs_recorded.season_id=seasons.season_id 
INNER JOIN programs ON programs_recorded.program_id=programs.program_id 
INNER JOIN songs_performed ON songs_performed.program_id=programs.program_id 
INNER JOIN songs ON songs.song_id=songs_performed.song_id 
INNER JOIN `band` ON `band`.`song_id`=`songs`.`song_id` 
INNER JOIN `band_member` ON `band_member`.`band_id`=`band`.`band_id` 
WHERE `band`.`song_id` = ANY ( SELECT `songs_performed`.`song_id` 
                               FROM `songs_performed` 
                               GROUP BY `song_id` 
                               HAVING COUNT(`s_id`)>3)
GROUP BY `member_id` ; 

上記のようにCOUNT(s_id)>3、一般的ではないことを書いていますが、解決策の 1 つは、GROUP BY 関数を order by と limit と共に使用することですが、SQLyog は、このバージョンではサポートされていないというエラーを出します。

4

1 に答える 1

0

ともかく、こんなのどうしたものか…

SELECT DISTINCT b.band_id
              , member_id
              , member_name
              , contact_no  
           FROM seasons ss
           JOIN programs_recorded pr
             ON pr.season_id = ss.season_id 
           JOIN programs p
             ON pr.program_id = p.program_id 
           JOIN songs_performed sp
             ON sp.program_id = p.program_id 
           JOIN songs s
             ON s.song_id = sp.song_id 
           JOIN band b
             ON b.song_id = s.song_id 
           JOIN band_member bm
             ON bm.band_id = b.band_id 
           JOIN 
              ( SELECT sp.song_id 
                  FROM songs_performed sp
                 GROUP 
                    BY song_id 
                HAVING COUNT(s_id) > 3
              ) x
             ON x.song_id = b.song_id; 

??

于 2014-05-26T17:37:58.593 に答える