SQL Example : SQL Example 4
2016/11/12

メモの検索


通常メモ内容は memo カラムに格納されています。
故に以下のSQLで参照ができます。

SELECT * FROM list_view WHERE memo LIKE '%ほげ%';

しかし、メモ読込遅延をONに設定すると、list_view でメモを有するアイテムの memo カラムには一律 1 が格納されます。

メニュー → オプション → 全体設定 → 動作関係タブの「メモ読込遅延(ミリ秒)」を1以上にするとONです

この状態で上記のSQLを実行しても memo カラムには 1 しかありませんので期待した結果が得られません。

読込遅延ONでも正しくメモを検索するには、メモが格納されている本来の memo_table を対象に検索します。
具体的には以下のようにサブクエリで一致するプライマリキーを抽出する感じで良いと思います。

SELECT * FROM list_view WHERE file_name IN (
    SELECT pfile_mm FROM memo_table WHERE memo LIKE '%ほげ%'
);

読込遅延OFFでしか使用しない場合は最初に示したSQLのほうが軽いと思います。

 

memo_table のプライマリキーが pfile_mm となっています。
natural join が動作しない時の遺物ですが後を考えて file_name にしておけばと反省です(汗