チェックリスト形式のプログラムを作成しています。ファイルはチェックリストに割り当てられており、チェックリストの項目をチェックして特定のファイルをチェックしています。私は特定のチェックリスト項目(項目が順序付けられている)のために準備ができているすべてのファイルを返すクエリを実行しようとしています。SQL Left Join問題
たとえば、チェックリスト項目番号3の準備が整っているファイルを確認しようとしているため、項目番号2はチェックされているが、項目番号3はチェックされていないファイルはすべて検索する必要があります。
サブクエリがこの問題を解決することがわかっているにもかかわらず、サブクエリは使用しないことをお勧めします。これは、このクエリがすべてのチェックリスト項目に対して実行されるためですここのクエリはパフォーマンスに悪影響を及ぼします。ここで
は、これまでのところ、私のクエリです:
SELECT
DISTINCT f.filename, f.id
FROM
files f LEFT JOIN checklist_item_checklist cic1 LEFT JOIN checklist_check cc1 ON
cc1.checklist_item_checklist_id = cic1.checklist_item_checklist_id ON
cc1.file_id != f.id,checklist_item_checklist cic2,
checklist_check cc2
WHERE
cic1.checklist_item_checklist_id = 2 AND
cic2.order_number = cic1.order_number - 1 AND
cic1.checklist_id = cic2.checklist_id AND
cc2.checklist_item_checklist_id = cic2.checklist_item_checklist_id AND
cc2.file_id = f.id
テーブルの構造は次のとおりです。
ファイル
- ID(PK)
- ファイル名
checklist_item_checklist
- checklist_item_checklist_id(PK)
- ORDER_NUMBER
checklist_check
- FILE_ID(FKがfiles.idする)
- checklist_item_ checklist_id(FKからchecklist_item_checklist.checklist_item_checklist_id)
ありがとうございました!
を私のクエリは実際に構文エラーがない、細かい動作します。あなたのクエリはいくつかの構文エラーを修正しました。私は途中でMySQLを使用しています。そして、はい、私はサブクエリ(構文がない)を使用して問題を解決しました、私はちょうど別のソリューションがあったと思っていた。しかし、ありがとう! – Massenburger