みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
Windows7でFileMakerpro12を使用中です。
初めて質問させていただきます。
テーブル1にはフィールドA、フィールドBがあります。
テーブル2にはフィールドCがあります。
これらのテーブルにリレーションは組んでありません。
テーブル1のあるレコードにおけるフィールドA、フィールドBの値と
テーブル2全レコードのフィールドCの値を比較したいです。
以下の条件を満たす場合に、テーブル1内の同レコードの第3のフィールド(フィールドD)に"有"と表示させたいです。
フィールドA≦フィールドCの全ての値 and フィールドCの全ての値≦フィールドB
まだ使える関数も少ない初心者ですので、どうにもこうにもいかず、困っています。
ちなみにテーブル1のレコード数は約6000、テーブル2のレコード数は約100です。
何かアイデアがあれば教えていただけると助かります。
よろしくお願いします。
>フィールドA≦フィールドCの全ての値 and フィールドCの全ての値≦フィールドB
を読み換えると
フィールドAがフィールドCの最小値より小さく、フィールドBがフィールドCの最大値より大きい–となります。
最小値はMin()関数、最大値はMax()関数で計算できます。
全てのレコードを対象に計算するときは、デカルト積(✕)を使います。
Offline
早速ご回答いただきましてありがとうございます。
私の説明不足で申し訳ないのですが、
>フィールドAがフィールドCの最小値より小さく、フィールドBがフィールドCの最大値より大きい
ではなく、フィールドCにあるレコード(数値)がフィールドAとBの間の数値かどうかを知りたいです。
たとえば、テーブル2のフィールドCの値が以下のようだった場合、
<テーブル2>
フィールドC
2
13
2,13といった数値がフィールドAとBの間に含まれるような場合は、フィールドDに有と記載したいです。
<テーブル1>
フィールドA フィールドB フィールドD
0 5 有
5 10
10 14 有
いかがでしょうか。
こういう場合もデカルト積を用いて可能なのでしょうか。
すみません。
表が見づらくなってしまいました...
<テーブル1>においては、
フィールドA:0、フィールドB:5の時(フィールドCに記載の2がフィールドA、B間に含まれているから)→フィールドD:有
フィールドA:5、フィールドB:10の時(フィールドCに記載の2や13がフィールドA、B間に含まれていないから)→フィールドD:空欄
フィールドA:10、フィールドB:14の時(フィールドCに記載の13がフィールドA、B間含まれているから)→フィールドD:有
としたいです。
分かりづらくてすみません....
そういう場合は「全て」じゃなく「どれか」
A<=C
AND
B>=C
というリレーションで
Case(Count(テーブル2::C);"有")
フィールドCのいずれかの値 が、フィールドA以上でフィールドB以下
という事ですね。最初に書かれた条件と違いますね。
loopを組んで比較するか、再起計算する必要が有りそうです。
Offline
は!なるほど。
全てという書き方は違っていました。
すみません、ご指摘ありがとうございます。
私もloopとか使うのかなと思って、ごちゃごちゃしていたのですが、timさんの方法で試したら、テスト用の簡易データでは上手く実行できました。
実際のファイルに応用して、確認してみます。
timさんに教えていただいた方法で、この質問は解決しました。
ありがとうございました。
Pages: 1
[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 512.29 KiB (Peak: 516.83 KiB) ]