在我的PHP/MySQL的應用程序,我有3個表來存儲產品/功能信息:SQL連接(包含/排除)不工作
product id brand ref mod 2675 Brand 1 123456 Model X 3644 Brand 2 78910 Model Y 3984 Brand 3 35532 Model Z function id name active sort_order 0 NONE 1 0 1 Function 1 1 0 2 Function 2 1 0 3 Function 3 1 0 product2function id product_id function_id 2 2675 1 3 3644 1 4 3644 2 5 3984 1
表product2function用來使產品和之間的聯繫功能(S)可用。
一個產品可以有一個或多個功能。
使用JOIN獲取給定產品ID的可用函數的SQL查詢不是問題,它工作正常。
現在我需要建立一個SQL查詢應返回更精確的結果:
在例子中,我需要檢索的所有產品(第),具有唯一的功能1(ID = 1)。不是功能1,也許是一個或許多其他,只有功能1.
在我的情況下,這意味着產品3644不應該返回,因爲它有功能ID = 1和功能ID = 2。
我試圖用IN語法得到預期的結果,但沒有成功。
非常感謝您的幫助。
感謝wildpasser,你的代碼是exactely我所需要的。因爲我可以指定多個函數來包含和排除,所以我使用ex.function_id IN(1,2,...)來更改where子句。 – 2013-05-11 15:55:26
尊敬的野人,恐怕我需要重新打開這個問題,因爲,您昨天給出的解決方案正在工作,只要我需要檢查一個函數。 在上面描述的數據中,如果我只需要檢查函數= 1,它就可以工作。 由於我的產品可以有多個功能,我需要能夠建立一個SQL查詢返回,即只有產品function = 1和功能= 2。 不應返回只有函數= 1或函數= 2的產品。 我試圖添加AND到where子句,不幸沒有成功。 希望你能幫助我。 – 2013-05-12 19:58:09