0
我有三個表,即根據dms_doc doc_id加入。因此,每個文檔可以有多個部門和合同(存儲在另外兩個表中,但這些表中的信息與此查詢無關)。SQL多個子句只返回一個值
dms_docs dms_departments dms_contracts
id id id
doc_id doc_id
dep_id con_id
到目前爲止,我有以下查詢:
SELECT dms_docs.*, dms_departments.doc_id, dms_departments.dep_id, dms_contracts.doc_id, dms_contracts.con_id
FROM dms_docs
JOIN dms_departments
ON dms_docs.id=dms_departments.doc_id
JOIN dms_contracts
ON dms_docs.id=dms_contracts.doc_id
WHERE dep_id = 10
AND (con_id = 1 OR con_id = 2)
因此,每個文件可以有多個合同(CON_ID),每個文件可以有多個部門(dep_id),上面的查詢產生的問題如果一個文件有許多合同和/或部門,它會多次返回文件。
例如,在上述查詢中,文檔屬於合同1和合同2,因此它返回2次。如果符合我傳遞給它的任何標準,我如何才能返回結果一次?我猜我需要在這裏某處使用DISTINCT,但我不知道如何正確執行此操作。
如果顯示CON_ID,你會得到兩行關聯到兩個合同文件。你想避免這種情況嗎? – mucio 2015-02-11 12:26:10
@mucio如果一個文件屬於contract.id 1和contract.id 2它們都返回,我只希望返回一個文件。這背後的想法是用戶可以選擇他們想要返回的文件,以便他們可以要求屬於合同1,5,6,7的所有文件,並且如果文件屬於這些合同中的3個,我當前的查詢將返回文件3次,我只希望它只返回一次。 – twigg 2015-02-11 12:29:30
然後將您的select語句更改爲'SELECT distinct dms_docs。*',這樣您將只能看到文檔信息並且沒有重複項 – mucio 2015-02-11 12:32:55