初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2022-04-13 00:14:21

hijiri
Member

ExecuteSQL ソートについて【ORDER BY】

環境FM18 Win
ExecuteSQL初心者です。

テーブル:D_八百屋
フィールド:野菜名 に以下の様なデータがあります。

いちご
かき
はくさい
はくさい
きゃべつ
じゃがいも
じゃがいも
たまねぎ
じゃがいも
いちご
いちご
はくさい

■ExecuteSQL文
ExecuteSQL ( "SELECT \"野菜名\",COUNT (\"野菜名\")
FROM \"D_八百屋\"
GROUP BY \"野菜名\"
ORDER BY COUNT (\"野菜名\") DESC"
;"";""; "" )

■結果
いちご,3
かき,1
きゃべつ,1
じゃがいも,3
たまねぎ,1
はくさい,3

となり降順に並び替えが出来ません。
記入方法が間違っているのでしょうか?
ご教授ください。

Offline

#2 2022-04-13 07:02:07

himadanee
Guest

Re: ExecuteSQL ソートについて【ORDER BY】

エラーにならないのにソートされてないのは不思議な結果ですね...
ORDER BY 2 DESC
でできると思いますが(結果の2列目でソート)

#3 2022-04-13 13:18:14

koko009
Guest

Re: ExecuteSQL ソートについて【ORDER BY】

COUNT (\"野菜名\")の 計算結果を直接使えないから as句を使って別名で
■ExecuteSQL文
ExecuteSQL ( "SELECT \"野菜名\",COUNT (\"野菜名\") as \"野菜_c\"
FROM \"D_八百屋\"
GROUP BY \"野菜名\"
ORDER BY \"野菜_c\" DESC"
;"";""; "" )

#4 2022-04-13 14:50:23

hijiri
Member

Re: ExecuteSQL ソートについて【ORDER BY】

みなさま、ありがとうございます。

ORDER BY 2 DESCで思うようなソート順になりました。

Offline

#5 2022-04-13 23:45:35

hijiri
Member

Re: ExecuteSQL ソートについて【ORDER BY】

追加の質問になります。
申し訳ありません。

目的のソート順位になりました。
■結果
いちご,3
はくさい,3
じゃがいも,3
かき,1
きゃべつ,1
たまねぎ,1

このソート順結果を維持して、以下の様なデータはどのように作成したら良いでしょうか?
【欲しいデータ結果】
いちご
はくさい
じゃがいも
かき
きゃべつ
たまねぎ

Offline

#6 2022-04-14 13:58:22

koko009
Guest

Re: ExecuteSQL ソートについて【ORDER BY】

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関数でリストを作成しなければならない

#7 2022-04-14 14:03:20

koko009
Guest

Re: ExecuteSQL ソートについて【ORDER BY】

フィルード名 test_02::計算結果
を変数に直しておくのを忘れた。

#8 2022-04-14 15:44:37

himadanee
Guest

Re: ExecuteSQL ソートについて【ORDER BY】

While関数がなかったころはEvaluateで何とかしようと色々使ってました。

Evaluate(
"\""&
ExecuteSQL ( "
SELECT \"野菜名\",COUNT(*)
FROM \"D_八百屋\"
GROUP BY \"野菜名\"
ORDER BY 2 DESC
";"\"&LEFT(\"";"\";0)&\¶&\"" )
&"\",0)"
)

#9 2022-04-15 12:56:19

hijiri
Member

Re: ExecuteSQL ソートについて【ORDER BY】

思っている内容でデータが取得出来ました。

While関数ですが存在は知っていたのですが実際に使ったことがありませんでした。
大変勉強になりました。
ありがとうございました。

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.004 seconds, 7 queries executed - Memory usage: 512.7 KiB (Peak: 517.24 KiB) ]