• ベストアンサー

PHP SQL 問合せについて

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

質問者が選んだベストアンサー

  • ベストアンサー
  • Siegrune
  • ベストアンサー率35% (316/895)
回答No.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句が必要だったりとか・・・)

koyuhi
質問者

お礼

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

koyuhi
質問者

補足

ご回答、ありがとうございます。 確認しましたが、SQLエラーとなりました。 tableA x / tableA y ・・この辺りの理解不足ですが。 参考文献のアドレス or 説明をお願します。 countを使用する限り、出現回数が求まる気がしますが・・ もう少し、他の回答を待ちます。

その他の回答 (2)

  • Siegrune
  • ベストアンサー率35% (316/895)
回答No.2

nameが、「ばなな」「りんご」「みかん」しかないか あっても他は無視して最後にNo順にだせばいいなら select * from tableA order by case name when 'ばなな' then 1 when 'りんご' then 2 when 'みかん' then 3 else 4 end,No 普通は、nameと表示順を持つテーブルを作って結合します。 ('いちご'とかが出てきたときに対応しやすいため。)

koyuhi
質問者

補足

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

回答No.1

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

koyuhi
質問者

補足

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

関連するQ&A