@gerikson:
申し訳ありませんが、答えはありません。実際のSQLをクエリ言語として受け入れられるツールがもっとあればよいのですが;)
しかし、技術的にはこれを行うことができます。LightroomカタログはSQLiteデータベースです。FirefoxのSQLite Managerアドオンで閲覧してみてください。とてもシンプルです。
Luaで拡張機能を書くことでこれを行うことができます-悲しいかな、私はそのステップを実行していないので、それを行う方法がわかりません。
スマートコレクションが機能する方法で自動更新コレクションにする必要がない場合は、スクリプトを時々実行することに対処できれば、SQLiteデータベースにクエリを実行する外部ツールを希望どおりに作成できます。問題の特定の写真を明示的に含むスマートコレクションxmlファイルを作成し、それをLightroomにインポートします。(私はこれを最後に自分で行う必要がありました- この質問を参照してください)
私はこの選択クエリを試したところ、うまくいきました:
SELECT
img.id_local AS imageID,
kwdef.name AS keyword,
img.rootFile AS fileID,
files.originalFilename
FROM AgLibraryKeywordImage kwimg
JOIN Adobe_images img
ON img.id_local = kwimg.image
JOIN AgLibraryFile files
ON img.rootFile = files.id_local
JOIN AgLibraryKeyword kwdef
ON kwdef.id_local = kwimg.tag
GROUP BY kwimg.image
HAVING COUNT(*)=1
AND kwdef.name = ?
どこを置き換える必要がありますか?キーワード名(例'foo'
:)を使用するか、準備済みステートメントとして実行します。GROUP BY
句は魔法ん:イメージすることで、このグループの結果は、HAVING COUNT(*)=1
1つのレコードを持つ画像に出力を制限するために、SQLに指示します。
このクエリは、スタックのある画像ではおそらく正しく機能しません。その場合、すべてJOIN
のが1対1 になるように変更する必要があります(keyword-imageテーブルを除く)