初歩的質問かとは思いますが、下記の後に order by [件数]のように並べ替えをするにはどのようにしたらよいでしょうか。このままくっつけるとダメなようで。
sSQL = "SELECT Author,count(MsgID) as 件数 FROM messages group by Author

#access Jetです。

A 回答 (1件)

やってみたことがないので、できるとはいえませんが、多少のスピードを我慢するのであれば、サブクエリにしてはどうでしょうか?



select * from (
select Author,count(MsgID) as 件数 from messages group by Author) order by 件数

アクセスで1つのクエリの中にサブクエリが許されるかどうかがわかりません(特にgroup byがあるので・・・)できなければ、クエリを2つに分けられてはどうでしょうか?
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
恥ずかしながら「サブクエリ」というのが身についていません。そう言われれば、確か聞いたことがある・・・というレベルです。

#目的の表示はおかげ様でできました。
#勉強になりました。(*^^*)

お礼日時:2001/05/29 09:07

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

関連するカテゴリからQ&Aを探す

このQ&Aと関連する良く見られている質問

QGROUP BYを使用したCOUNT

いつもお世話になっております。

現在下記のようなSQLを発行していまして、
件数を取得したいのですが、取得データの結果が
0件以外の時は良いのですが、0件の時は
「レコードが選択されませんでした」と表示されてしまいます。
何とか0件で表示できないでしょうか?

SELECT COUNT(*) FROM T_M_MAKER
HAVING MAKER_CD = '010'
GROUP BY MAKER_CD

苦し紛れに
SELECT DECODE(COUNT(*),'',0,COUNT(*)) FROM T_M_MAKER
HAVING MAKER_CD = '010'
GROUP BY MAKER_CD

というのもやってみましたが、結果は一緒でした。
どなたかお分かりになる方、回答をお願いします。

Aベストアンサー

こんにちわ。

RDBMS の種類が不明ですが、Oracle であれば
インライン・ビューで解決できます。
Select count(*) from (select ~ from T_M_MAKER
 group by ~ having ~);

QORDER BY の項目を SELECT する効果

ORDER BY の項目を SELECT する項目に含めるか否かで、速度や
メモリ消費の点で何らかの差がでるでしょうか?どちらが望ましい
という点も含めてプロフェッショナルの方の回答をお待ちしています。

Aベストアンサー

長い間、標準SQL及び多くのRDBMSでは、「ORDER BYで指定する項目は、SELECTの選択リストで指定した項目でなければならない」という制限がありました。
「SELECTの選択リストで指定していない項目でも、ORDER BY指定が可能」となったのは、比較的、最近のことです。
現在でも、「ORDER BYで式を指定」した場合などで、RDBMSにより、最適なアクセス計画を生成できないといった問題があります。

記述したSQLで、性能が出せるかどうかは、使用しているRDBMS、バージョンにより、大きな違いが生じます。
ORDER BYに関しては、メモリ消費よりは、インデクスを有効活用し、ソートを抑止できるかどうかが、利用者側にはっきり見えるところです。

自分で使うRDBMS及びバージョンで、どういうアクセス計画が生成されるかという、分析は必須です。

QSQLiteManagerでOrder by DESCが使えない

Webベース型のSQLite管理ソフトを使おうとしているのですが、
なぜか Order by " " Descを打ちこんでも、
Order by " " Asc として認識されます。

ネットで検索しても類似例は見つからなくて、困っています。

なにか解決策ご存じの方はいませんか?

Aベストアンサー

どこで配布されているソフトでしょう?
配布元にバグ情報とか、QandAとか、質問受付ページとかないのですか?

Qクロス集計での order by句の使い方

下記の order byの部分を年月日でなく合計件数順に並べ変えたいのですが、Count(氏名)を入れると「 order by句で集計関数は使えません」のようなメッセージが出ます。(access2000)
何か良い方法はないでしょうか。

TRANSFORM Count(氏名) AS 氏名のカウント
SELECT 年月日, Count(氏名) AS 合計件数
FROM 日誌
GROUP BY 年月日
ORDER BY 年月日
PIVOT 区分;

#access素人です。

Aベストアンサー

こんにちは。

クロス集計クエリを元に、もう1つクエリを作って
「氏名のカウント」で並び替えをしてみてはどうでしょうか?

ご参考までに。

ではでは・・・

Qorder by について

質問させてください。
下記テーブルがあるとします。
[samle_tbl](フィールドa, b(integer))
======
a|b
======
2|*
*|4
3|5
4|2
*|1
2|6
1|2
(※*はNULLデータ)
上記のテーブルでa, bフィールドにおいて数字の大きいレコード順に取得したいとかんがえています。
2|6
3|5
*|4
4|2
2|*
1|2
*|1
簡単にいうとa, bフィールドの値においてどちらかの数値がa, bフィールド内において降順にレコードをシュとくしたいです。
同じ順番に値する場合*(NULLデータ)を含むレコードと含まないレコードの順番は気にしません。
どのようなSQLを実行すれば取得できますでしょうか?

Aベストアンサー

order by
case
when coalesce(a,-9999) > coalesce(b,-9999) then a else coalesce(b,-9999)
end


とかどうでしょう?
だめだったらasで別名定義も試してみてください。
#nullは適当に-9999なんてしてみました(^^;


人気Q&Aランキング

おすすめ情報