在我的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