アプリ版:「スタンプのみでお礼する」機能のリリースについて

SQLについて質問いたします。SQL 全般でも結構です。
No,name
1,ばなな
2,りんご
3,ばなな
4,みかん
5,ばなな
6,りんご
上記テーブルで
1,ばなな
3,ばなな
5,ばなな
2,りんご
6,りんご
4,みかん
の結果を得るSQLはどのように記述すればよいでしょうか?

A 回答 (3件)

>「果物の出現回数が多い順に並べる」


ということなら、

select * from tableA x
order by
(select count(*) from tableA y
where y.name = x.name
)
,No

とか、
select x.no,x.name from tableA x,
(select y.name,count(*) cnt from tableA y
group by y.name
) z
where x.name = z.name
order by
z.cnt,x.No

とか。
DBにより多少変わるかも。(as句が必要だったりとか・・・)

この回答への補足

ご回答、ありがとうございます。
確認しましたが、SQLエラーとなりました。
tableA x / tableA y ・・この辺りの理解不足ですが。
参考文献のアドレス or 説明をお願します。

countを使用する限り、出現回数が求まる気がしますが・・

もう少し、他の回答を待ちます。

補足日時:2012/09/10 09:21
    • good
    • 0
この回答へのお礼

ご回答、ありがとうございました。
色々と調べ、勉強になりました。
PHPではAS句必要なしですね。
結局、構文エラーが原因で、正しい結果が得られませんでした。
No3がドンピシャの回答で、正しい結果が求められました。
感謝!感謝!です。

お礼日時:2012/09/10 10:16

nameが、「ばなな」「りんご」「みかん」しかないか


あっても他は無視して最後にNo順にだせばいいなら

select * from tableA
order by
case name
when 'ばなな' then 1
when 'りんご' then 2
when 'みかん' then 3
else 4
end,No

普通は、nameと表示順を持つテーブルを作って結合します。
('いちご'とかが出てきたときに対応しやすいため。)

この回答への補足

回答頂き、ありがとうございます。
言葉たらずでした。追加質問です。

「果物の出現回数が多い順に並べる」(出現回数ではなく、全ての結果を、name,noで出力です)
上記以降
ぶどう、パイン・・あります。(他は無視しません。)
再度、お願いいたします。

補足日時:2012/09/10 07:17
    • good
    • 0

select No,name from table_name ORDER BY name,No


としますが、nameは文字コードの小さい順になるので「ばなな」「みかん」「りんご」の順になります。

この回答への補足

ご回答、ありがとうございます。
No1同様です。
文字コードの小さい順ではなく、「出現の多い順に、name,noで全ての結果を得るには?」を補足します。
出現回数ではありません。(count は理解しています)
再度、お願いいたします。

補足日時:2012/09/10 07:33
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!