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

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

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

You are not logged in.

Announcement

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


#1 2023-02-13 18:16:51

匿名
Guest

ExecuteSQLでサブクエリはできるのか?

初めまして。

質問なのですが、ExecuteSQLでサブクエリはできるのでしょうか?

以下のテーブルで次のようなSQLを打つと結果が返ってこないので、教えていただきたいです。

DB内容
shipping


order_detail_record
unique_id:shipping_id:JAN:qty
1    :12345678  :1010:2
2    :12345678  :1020:1

count_detail_record
unique_id:shipping_id:JAN:qty
1    :12345678  :1020:1
2    :12345678  :1010:1
3    :12345678  :1010:1

ExecuteSQL (
"
select
     odr.qty - cdr.qty
from
     order_detail_record odr
join ( seletc
              shipping_id,
              jan,
              sum(qty) as qty
       from
              count_detail_record cdr
              group by
       group by
              shipping_id,jan,
       )cdr on cdr.shipping_id = odr.shipping_id and cdr.jan = odr.jan
where
       odr.shipping_id = ?
"
; "" ; "" ; shipping::id )

#2 2023-02-13 20:34:35

himadanee
Guest

Re: ExecuteSQLでサブクエリはできるのか?

ここに説明書がありますが、サブクエリは使えるところもありますがFROMに使えるのはテーブルだけだったはずです。
https://help.claris.com/ja/sql-reference.pdf
ざっと見ましたが、UPDATEの例しかないようですが...WHEREには使えたはず。

質問のSQLは、group by が重複してるところがおかしいですね。

#3 2023-02-15 15:38:15

himadanee
Guest

Re: ExecuteSQLでサブクエリはできるのか?

それと、joinの中がseletcにtypoしてます。

janも出さないと結果が意味不明になるので、これでどうですか。

ExecuteSQL (
"
select
    odr.jan, max(odr.qty), sum(cdr.qty)
from
     order_detail_record odr
join count_detail_record cdr
on cdr.shipping_id = odr.shipping_id and cdr.jan = odr.jan
where
       odr.shipping_id = ?
GROUP BY odr.jan
"
; "" ; "" ; shipping::id )

結果
1010,2,2
1020,1,1

max(odr.qty), sum(cdr.qty)

max(odr.qty)-sum(cdr.qty)
とできれば一発で計算できるのですが、あいにく集計関数を計算に使うのはサポートされてません。
カンマを-に変えたりしてSQLの結果をEvaluateできるようにするなどの後処理が必要です。

何かもっと別のSQL構文でも可能かもしれないけど、ちょっと思いつかなかった。

#4 2023-02-15 18:22:55

匿名
Guest

Re: ExecuteSQLでサブクエリはできるのか?

回答ありがとうございます。
このSQLですが、実はifの中に組み込んで 条件分岐に使いたいと思っているので、
select内は「計算結果のみ」でないといけないと思っています。
こちらで試してみますが、うまくいかなかったらダメですかね・・・・

#5 2023-02-15 18:59:07

himadanee
Guest

Re: ExecuteSQLでサブクエリはできるのか?

複数のjanの差数が複数行で結果に出てきますが、どういう条件ですか?
すべてが0かどうか?

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 555.09 KiB (Peak: 582.43 KiB) ]