【发布时间】:2013-06-17 22:40:30
【问题描述】:
我需要汇总一个查询,而不是为我提供具有不同装饰的所有版本。每个修剪类型可以由多个修剪ID定义。
我在下面的尝试是说:给我所有具有任何类型的电动车窗和手动空调以及任何类型的安全气囊等的版本。
AND 子句的数量取决于用户输入。
当然,这个查询不起作用。实际上它有效,但给了我一个空的结果集。
感谢您的帮助。
SELECT *
FROM vprice_range
INNER JOIN versiontrim USING ( version_id )
WHERE versiontrim.trim_id IN ( 139, 152, 237, 265, 266 ) == types of power window
AND versiontrim.trim_id IN ( 39 ) == manual air conditioner
.....
AND versiontrim.trim_id IN (45, 55, 154) == types of air bags
GROUP BY version_id
【问题讨论】:
-
为什么在使用一个字段时将 id 分开?
-
bksi。这取决于用户输入。用户可以选择过滤电动车窗和气囊,或任何组合。
-
那不是
OR而不是AND? -
那么你应该使用 OR 而不是 AND
-
bkwi。在 IN 子句中它肯定是 OR,但对于其他修剪它是 AND。条件是:它可以是任何,即 OR,在那个修剪内,但它必须是 AND 另一个修剪。如果我将 OR 用于其他装饰,我将拥有越来越多符合标准的版本,但现实情况是,对于每个新装饰,您将拥有越来越少的版本。所以,它是。
标签: mysql