みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
環境FM18 Win
ExecuteSQL初心者です。
テーブル:D_八百屋
フィールド:野菜名 に以下の様なデータがあります。
いちご
かき
はくさい
はくさい
きゃべつ
じゃがいも
じゃがいも
たまねぎ
じゃがいも
いちご
いちご
はくさい
■ExecuteSQL文
ExecuteSQL ( "SELECT \"野菜名\",COUNT (\"野菜名\")
FROM \"D_八百屋\"
GROUP BY \"野菜名\"
ORDER BY COUNT (\"野菜名\") DESC"
;"";""; "" )
■結果
いちご,3
かき,1
きゃべつ,1
じゃがいも,3
たまねぎ,1
はくさい,3
となり降順に並び替えが出来ません。
記入方法が間違っているのでしょうか?
ご教授ください。
Offline
エラーにならないのにソートされてないのは不思議な結果ですね...
ORDER BY 2 DESC
でできると思いますが(結果の2列目でソート)
COUNT (\"野菜名\")の 計算結果を直接使えないから as句を使って別名で
■ExecuteSQL文
ExecuteSQL ( "SELECT \"野菜名\",COUNT (\"野菜名\") as \"野菜_c\"
FROM \"D_八百屋\"
GROUP BY \"野菜名\"
ORDER BY \"野菜_c\" DESC"
;"";""; "" )
みなさま、ありがとうございます。
ORDER BY 2 DESCで思うようなソート順になりました。
Offline
追加の質問になります。
申し訳ありません。
目的のソート順位になりました。
■結果
いちご,3
はくさい,3
じゃがいも,3
かき,1
きゃべつ,1
たまねぎ,1
このソート順結果を維持して、以下の様なデータはどのように作成したら良いでしょうか?
【欲しいデータ結果】
いちご
はくさい
じゃがいも
かき
きゃべつ
たまねぎ
Offline
fromにサブクエリが使えないので直接は無理かも?
ベタな方法 1
ExecuteSQLの結果を変数として野菜名の部分だけをWhile関数を使い再構成
While ( [ lst0=Substitute ( test_02::計算結果 ; "," ; ¶ );lst="";cnt=0 ] ; cnt≤ValueCount ( lst0 )-1 ; [ lst=lst & GetValue ( lst0; cnt+1) & ¶;cnt=cnt+2 ] ; lst )
ベタな方法 2
ODBCを使いSQL(クエリは同じようなもの)で1フィールだけにインポート・・欠点は行数分のレコードが作られるので1レコードに表示したいときは、再度ExecuteSQL関数かlist関数でリストを作成しなければならない
フィルード名 test_02::計算結果
を変数に直しておくのを忘れた。
While関数がなかったころはEvaluateで何とかしようと色々使ってました。
Evaluate(
"\""&
ExecuteSQL ( "
SELECT \"野菜名\",COUNT(*)
FROM \"D_八百屋\"
GROUP BY \"野菜名\"
ORDER BY 2 DESC
";"\"&LEFT(\"";"\";0)&\¶&\"" )
&"\",0)"
)
思っている内容でデータが取得出来ました。
While関数ですが存在は知っていたのですが実際に使ったことがありませんでした。
大変勉強になりました。
ありがとうございました。
Offline
Pages: 1
[ Generated in 0.004 seconds, 7 queries executed - Memory usage: 512.7 KiB (Peak: 517.24 KiB) ]