我是编码/ SQL的新手,所以这个问题非常基本。
我需要生成一份报告,其中包含一个经销商ID下包含4种不同车型的报告。以下查询仅返回别克制造的产品:
SELECT
*
FROM
tbl_dms
WHERE
tbl_dms.id_dealer = '7039' AND
tbl_dms.make = 'buick' or 'chevrolet' or 'gmc' or 'cadillac'
我唯一能做得到我想要的结果的事情是:
WHERE
tbl_dms.id_dealer = 7039 AND
tbl_dms.make = 'buick' or
tbl_dms.id_dealer = 7039 AND
tbl_dms.make = 'chevrolet' or
tbl_dms.id_dealer = 7039 AND
tbl_dms.make = 'gmc' or
tbl_dms.id_dealer = 7039 and
tbl_dms.make = 'cadillac'
有没有一种方法可以得到此结果而不必每次都列出经销商ID?
编辑:如果我使用此:
WHERE
tbl_dms.id_dealer = 7039 AND
tbl_dms.make = 'buick' or
tbl_dms.make = 'chevrolet' or
tbl_dms.make = 'gmc' or
tbl_dms.make = 'cadillac'
然后,它仅将DealerID与buick链接,并在我们的整个数据库中搜索其他品牌
WHERE
tbl_dms.id_dealer = '7039'
AND tbl_dms.make IN ('buick', 'chevrolet', 'gmc', 'cadillac')
你需要括号,如果你真的想要的OR
表情
WHERE
tbl_dms.id_dealer = 7039
AND (
tbl_dms.make = 'buick' or
tbl_dms.make = 'chevrolet' or
tbl_dms.make = 'gmc' or
tbl_dms.make = 'cadillac'
)
它有助于解释如果我重新编写查询以演示服务器实际上如何看待每个表达式时为什么需要括号的原因:
WHERE
(tbl_dms.id_dealer = 7039 AND tbl_dms.make = 'buick')
OR tbl_dms.make = 'chevrolet'
OR tbl_dms.make = 'gmc'
OR tbl_dms.make = 'cadillac'
在这里,无论经销商如何,任何雪佛兰,GMC或凯迪拉克都将匹配,这很清楚,这就是原始查询正在做的事情。
最后,我注意到这些都是通用汽车品牌。的最好的事情将是一个单独的表中makes
还包括了一个场manufacturer
,使得这些品牌都有着相同的GM
生产值,你可以做JOIN
这个表来限制你的结果是制造商。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句