みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
ExecuteSQL関数の設定の仕方について質問をさせて下さい。
http://www.filemaker.com/help/12/fmp/jp … .33.6.html
このURLにて
「開発部の従業員のNameとSalaryを一覧表示する」場合、
具体的には、
村上 90000
斎藤 89000
というテキストを返すには、
どの様な設定をすればいいのでしょうか?
FM14 WIN7 です。
よろしくお願いします。
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万クラスだと時間がかかりすぎて固まる)
開発部なら竹中と小川では?
WHERE Department=?
とやって、引数に"開発部"を与えるんでないと、結果が先にわかってる状態でないとSQLが作れません。
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
ありがとうございます。
確認させていただきます。
レコード数の多いテーブルの計算フィールドに使うと、1回あたりでは「ちょっと遅い」だけでもレコード数回計算されるんで固まります。
スクリプトでだけ使えば安全。
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 = ?
"
; ""; ""; "開発")
なのでしょうか??
略というか別名です。
from Employee E
で指定してます。
「実際は」の方はWHEREのとこを直し忘れてますが、別名なので指定すればどっちでも使用可能です。
ありがとうございます。
試してみます。
Pages: 1
[ Generated in 0.013 seconds, 9 queries executed - Memory usage: 517.16 KiB (Peak: 522.06 KiB) ]