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

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

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

You are not logged in.

Announcement

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


#1 2016-07-05 09:03:15

かわ
Guest

ExecuteSQL関数の設定の仕方

ExecuteSQL関数の設定の仕方について質問をさせて下さい。

http://www.filemaker.com/help/12/fmp/jp … .33.6.html
このURLにて
「開発部の従業員のNameとSalaryを一覧表示する」場合、
具体的には、
村上 90000
斎藤 89000
というテキストを返すには、

どの様な設定をすればいいのでしょうか?

FM14   WIN7  です。


よろしくお願いします。

#2 2016-07-05 09:22:11

barikan
Guest

Re: ExecuteSQL関数の設定の仕方

Let ( [
sql = "SELECT Employee.Name, Salary.Salary FROM Employee JOIN Salary ON Employee.EmpID = Salary.EmpID WHERE Employee.Name IN (?, ?)"
] ;
ExecuteSQL ( sql ; "" ; "" ; "村上" ; "斉藤" )
)

これで出ますが、昔ExecuteSQLを使ってひどい目にあったので、出来ればつかわないことをおすすめします。
(ちょっと複雑なSQLを書くと、レコードが100万クラスだと時間がかかりすぎて固まる)

#3 2016-07-05 10:42:55

tim
Guest

Re: ExecuteSQL関数の設定の仕方

開発部なら竹中と小川では?

#4 2016-07-05 10:46:19

tim
Guest

Re: ExecuteSQL関数の設定の仕方

WHERE Department=?
とやって、引数に"開発部"を与えるんでないと、結果が先にわかってる状態でないとSQLが作れません。

#5 2016-07-05 13:56:33

qb_dp
Member

Re: ExecuteSQL関数の設定の仕方

http://www.filemaker.com/help/12/fmp/jp … .33.6.html
上記の例にある
ExecuteSQL ("select sum(S.salary) from Employee E join Salary S on E.EmpID = S.EmpID where E.Department = ?"; ""; ""; Department)
の sum(S.salary) の部分を E.Name,S.salary に変更すればOKです。


ExecuteSQL (
"
select E.Name,S.salary
from Employee E join Salary S on E.EmpID = S.EmpID
where E.Department = ?
"
; ""; ""; "開発")

>(ちょっと複雑なSQLを書くと、レコードが100万クラスだと時間がかかりすぎて固まる)
レコード件数が多いと場合、JOIN を使うとかなり(使えないくらい)遅くなりますね。

Last edited by qb_dp (2016-07-06 10:19:16)

Offline

#6 2016-07-10 21:02:33

かわ
Guest

Re: ExecuteSQL関数の設定の仕方

ありがとうございます。

確認させていただきます。

#7 2016-07-11 06:57:22

calcer
Guest

Re: ExecuteSQL関数の設定の仕方

レコード数の多いテーブルの計算フィールドに使うと、1回あたりでは「ちょっと遅い」だけでもレコード数回計算されるんで固まります。
スクリプトでだけ使えば安全。

#8 2016-07-13 10:40:12

かわ
Guest

Re: ExecuteSQL関数の設定の仕方

ExecuteSQL (
"
select E.Name,S.salary
from Employee E join Salary S on E.EmpID = S.EmpID
where E.Department = ?
"
; ""; ""; "開発")


これは、「E.Name」は略されているのでしょうか?

実際は、
ExecuteSQL (
"
select Employee.Name, Salary.Salary
FROM Employee JOIN Salary ON Employee.EmpID = Salary.EmpID
WHERE E.Department = ?
"
; ""; ""; "開発")

なのでしょうか??

#9 2016-07-13 11:58:36

scripter
Guest

Re: ExecuteSQL関数の設定の仕方

略というか別名です。
from Employee E
で指定してます。

「実際は」の方はWHEREのとこを直し忘れてますが、別名なので指定すればどっちでも使用可能です。

#10 2016-07-13 13:37:33

かわ
Guest

Re: ExecuteSQL関数の設定の仕方

ありがとうございます。

試してみます。

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 7 queries executed - Memory usage: 518.23 KiB (Peak: 523.14 KiB) ]