みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
質問させて下さい。
ExecuteSQL( "SELECT MAX(ID),\"商品ID\" FROM \"在庫マスター\" WHERE FLG=1 GROUP BY \"商品ID\"";"|";"¶")
とすると正常に取得できます。
ExecuteSQL( "SELECT MAX(ID),\"商品ID\",\"商品名\" FROM \"在庫マスター\" WHERE FLG=1 GROUP BY \"商品ID\"";"|";"¶")
とすると「?」になってしまいます。
何度確認しても「商品名」はフィールドにあります。
何度見直しても解決策がみつかりません。
どなたかご存じの方いらっしゃいましたらお願いします(m__m)
----ゆかり
FMP19.5.2
group byに\"商品名\"も必要?
group byに\"商品名\"も必要?
[quote様ご返信ありがとうございます。
いえGROUP BY句は「商品ID」だけでグルーピングしたいので、商品IDとしております。
何かGROUP BY句の使い方を間違えているでしょうか?
---ゆかり
あっ当然、在庫数も必要なのです。
MAX(ID),商品ID,商品名,在庫数
が取得したい内容となります。
---ゆかり
group by句ってselectした列入れないとエラー出ませんでしたっけ?
ゆかりさんのエラーが出ている方の場合でしたら商品IDと商品名が必要な気が
group by句ってselectした列入れないとエラー出ませんでしたっけ?
ゆかりさんのエラーが出ている方の場合でしたら商品IDと商品名が必要な気が
ありがとうございます。
うまく表示できました。
MySQLのSQL文で通っていたのでわからなかったです。
ファイルメーカー固有の書き方でしょうか?
---ゆかり
それはMySQLの方が固有の書き方でしょう。
それはMySQLの方が固有の書き方でしょう。
なるほどそうなのですね。
MySQLしか使ってこなかったので気がつきませんでした~
すごく勉強になりました。
改めてありがとうございます(m__m)
---ゆかり
あれ?解決したんですか?
>MAX(ID),商品ID,商品名,在庫数
在庫数も集計するんでなければGROUPに必要です。
つまり、GROUPしないフィールドの値はレコードごとに違うので、集計関数を通さないと値が確定できないのです。
MySQLで通るというのは、商品IDが外部キー(別テーブルの主キー)で商品名は外部テーブルの値から持ってくるのを、FROMに書かないでも自動的にやってくれるのかなあ?FROMがビューか別のSQLになってるとかですか?
商品IDごとにIDがMAXなレコードを商品名と在庫数を含めて取得する、なら全く別のSQLが必要になるでしょう。
ExecuteSQL( "
SELECT \"ID\",\"商品ID\",\"商品名\",\"在庫数\"
FROM \"在庫マスター\"
WHERE FLG=1
AND
ID IN (SELECT MAX(\"ID\") FROM \"在庫マスター\" GROUP BY \"商品ID\"")
;"|";"¶")
かな?
WHERE FLG=1
をINの中の方にも入れないとだめかな。
あれ?解決したんですか?
>MAX(ID),商品ID,商品名,在庫数
在庫数も集計するんでなければGROUPに必要です。
つまり、GROUPしないフィールドの値はレコードごとに違うので、集計関数を通さないと値が確定できないのです。
MySQLで通るというのは、商品IDが外部キー(別テーブルの主キー)で商品名は外部テーブルの値から持ってくるのを、FROMに書かないでも自動的にやってくれるのかなあ?FROMがビューか別のSQLになってるとかですか?商品IDごとにIDがMAXなレコードを商品名と在庫数を含めて取得する、なら全く別のSQLが必要になるでしょう。
ExecuteSQL( "
SELECT \"ID\",\"商品ID\",\"商品名\",\"在庫数\"
FROM \"在庫マスター\"
WHERE FLG=1
AND
ID IN (SELECT MAX(\"ID\") FROM \"在庫マスター\" GROUP BY \"商品ID\"")
;"|";"¶")
かな?
WHERE FLG=1
をINの中の方にも入れないとだめかな。
ご返信ありがとうございます。
すみません最後まで書かなくて、SQLの間違いに気づき修正して対応させていました。
ExecuteSQL(
"SELECT \"ID\",\"商品ID\",\"商品名\",\"在庫数\" FROM \"在庫マスター\" WHERE ID IN(SELECT MAX(ID) FROM \"在庫マスター\" WHERE flg = 1 GROUP BY \"商品ID\")";"|";"¶")
最後まで書かずに解決ボタンを押さなくてすみません。以後気を付けます。
またMySQLの情報を頂きありがとうございました。
---ゆかり
Pages: 1
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 567.67 KiB (Peak: 582.56 KiB) ]