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

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

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

You are not logged in.

Announcement

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


#1 2014-12-18 09:54:58

素人28
Guest

ExecuteSQL関数でテーブル間の結合をしたい

いつもこのサイトを参考にして勉強しております、有難うございます。

SQL関数の勉強としたく自分でWEBで調べたのですが,
最終目的は3テーブル間の結合ですが、まず2テーブル間の結合で
以下のテーブルを作りました。

テーブル: SqlTest, SqlTest2
共通フィールド:name, 数量

これを結合してテーブル間のname毎の合計数量を出したいと、
下記の式を入れたのですが、?マークでうまくいきません。
お助け願えないでしょうか?


ExecuteSQL ( "select \"name\" , sum(\"数量\")

from \"SqlTest\"

LEFT JOIN \"SqlTest2\" on  \"SqlTest\".\"name\" = \"SqlTest2\".\"name\"

"; "";"";"")

#2 2014-12-18 10:31:37

SQLExecuter
Guest

Re: ExecuteSQL関数でテーブル間の結合をしたい

nameが各テーブル内でユニークであれば、結合結果の同じレコード内の合計だからSUMは使わない。

ExecuteSQL ( "select t1.\"name\" , t1.\"数量\"+t2.\"数量\"

from \"SqlTest\" t1

LEFT JOIN \"SqlTest2\" t2 on  t1.\"name\" = t2.\"name\"

"; "";"";"")

#3 2014-12-18 13:41:43

素人28
Guest

Re: ExecuteSQL関数でテーブル間の結合をしたい

SQLExecuter様、ありがとうございます。
見事に結合されて、答えがでました。

ただ、その私が作成した2テーブル間の中に
1テーブルにしかないnameのデータがありまして、
それだけ表示されないです。

SqlTest
name 数量
TOM   10
JAY     20
MARY   30

SqlTest2
name 数量
TOM   10
JAY     20

計算結果
TOM,20
JAY,40
MARY,

また別の式になるのでしょうか?
わたしの説明が足らず、申し訳ないです。

#4 2014-12-18 13:59:01

SQLExecuter
Guest

Re: ExecuteSQL関数でテーブル間の結合をしたい

t1.\"数量\"+t2.\"数量\"
ここでどっちかがNULLだと結果もNULLになるので、0に変換してから足す。
COALESCE(t1.\"数量\", 0) + COALESCE(t2.\"数量\", 0)

t1の方は必ず値があるならt2の方だけでもいいかな。

#5 2014-12-18 14:04:38

素人28
Guest

Re: ExecuteSQL関数でテーブル間の結合をしたい

SQLExecuter様、素晴らしいです。

有難うございました。

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.012 seconds, 9 queries executed - Memory usage: 507.7 KiB (Peak: 518.88 KiB) ]