你似乎是新的SQL 。穿过它是很危险的。我会建议加入这些SQL语句以了解发生了什么。
SELECT * FROM Product, ProductClassification
此时,您将从两个表中选择每个可能的行组合。现在你想开始过滤器。对于初学者,你需要获得你的产品分类。你应该在这里使用“OR”而不是AND。没有ProductClassification.ClassificationID将是既1750年到1749年
SELECT * FROM Product, ProductClassification WHERE
ProductClassification.ClassificationID = '1750' OR
ProductClassification.ClassificationID = '1749'
在这一点上,你已经过滤下来ProductClassification.ClassificationID,但你需要描述你只行有意在ProductClassification.ProductID和Product.ID是相同的。
SELECT * FROM Product, ProductClassification WHERE
(ProductClassification.ClassificationID = '1750' OR
ProductClassification.ClassificationID = '1749') AND
ProductClassification.ProductID = Product.ID
这会给你一个单独的行,该过滤器上的每个可能的组合。在你的例子中,你应该有两行 - 一个是ClassificationID为1750,另一个是ClassificationID为1749.因为你只对Product.ID和Product感兴趣。名称,你应该只返回这两个领域:
SELECT Product.ID, Product.Name FROM Product, ProductClassification WHERE
(ProductClassification.ClassificationID = '1750' OR
ProductClassification.ClassificationID = '1749') AND
ProductClassification.ProductID = Product.ID
想必你只需要唯一值,这样你就可以使用“DISTINCT”操作符,将你的回油过滤器到独特的价值观:
SELECT DISTINCT Product.ID, Product.Name FROM Product, ProductClassification WHERE
(ProductClassification.ClassificationID = '1750' OR
ProductClassification.ClassificationID = '1749') AND
ProductClassification.ProductID = Product.ID
使用JOIN语句处理这个查询有很多更好的方法,但这是一个好的开始。
来源
2011-10-10 14:59:19
Dan
谢谢你们所有帮助我的答案。 “Dano”谢谢你为我分手,帮了我很多。 “德姆”我最终使用你的程序。 – Peter