1
我正在創建一個清單式程序,其中文件被分配給清單,並且檢查某些文件清單中的項目。我試圖運行一個查詢,返回所有準備好某個清單項目的文件(項目被排序)。SQL左側加入問題
因此,例如,我想看看哪些文件在準備清單項目編號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