2010年03月09日

「外部RDBMSに持って行くテーブルのクリーンアップ」への補足

先に「外部RDBMSに持って行くテーブルのクリーンアップ」の記事を書きましたが、ひとつとても大切なポイントが抜けていましたので、補足させていただきます。

FileMaker では、リレーション定義で使用する参照先あるいは参照元のフィールドに、改行区切りで複数の値をセットしておき、"=" で結合することによって、改行で区切られた「いずれかの値」に一致したレコードを抽出するというテクニックが使われることがあります。

これらのテーブルが MySQL に移行した場合、ODBC ドライバ経由は、例えば
SELECT id FROM table_b WHERE field_b = 'value_in_field_a';
のような SQLステートメントを発行します。すなわち、改行コードを含めたフィールド全体の値が完全一致したレコードのみが抽出されることになり、これまでの FileMaker 上でのリレーションとは異なる結果となります。

こういったリレーション定義をしている場合は、外部 SQL データソースへ移行する前に、リレーション定義を複数のフィールドで構成するように分解する、等の準備が必要となります。

[03-11-2010 追記]
ちなみに、リレーションの参照元のテーブル table_a が FIleMaker 上にあり、被参照テーブル table_b が MySQL 上にある場合で、参照元の照合フィールド field_a が改行区切りのデータを持ち、被参照側の照合フィールド field_b がそれぞれ一つのデータを持っている場合、FileMaker は ODBC 経由で、
SELECT id FROM table_b WHERE field_b IN ('value1_in_field_a', 'value2_in_field_a', 'value3_in_field_a', 'value4_in_field_a');
というような SQL ステートメントを発行してくれるので、FileMaker 内で動作していた多対多リレーションと同じ動作が期待できます。

ただし、参照元のテーブル table_a が MySQL 上に移行した場合は、上述のような注意が必要です。


posted by Kojima at 06:31| Comment(0) | TrackBack(0) | External SQL Data Source | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック