Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL仅在所有指定条件均为true的情况下连接表_Mysql_Sql - Fatal编程技术网

Mysql SQL仅在所有指定条件均为true的情况下连接表

Mysql SQL仅在所有指定条件均为true的情况下连接表,mysql,sql,Mysql,Sql,假设我有两个表“cars”和“properties”,由表“car\u properties”链接。我可以选择所有有电动车窗或收音机或两者的汽车,执行如下操作 SELECT cars.id FROM cars JOIN car_properties ON cars.id = car_properties.car_id WHERE car_properties.property_id = 1 OR car_properties.property_id = 2 其中,

假设我有两个表“cars”和“properties”,由表“car\u properties”链接。我可以选择所有有电动车窗收音机两者的汽车,执行如下操作

SELECT cars.id 
FROM cars 
JOIN car_properties 
   ON cars.id = car_properties.car_id 
WHERE 
   car_properties.property_id = 1 
   OR car_properties.property_id = 2
其中,“电动车窗”的属性标识为“1”,而“车载收音机”的属性标识为“2”

但是,我真正想做的是只选择具有两种属性的汽车(而不仅仅是一种或另一种或两者)

我想这很简单,但最有效的方法是什么?

加入两次:

SELECT cars.id
  FROM cars
  JOIN car_properties AS cp1
    ON cp1.car_id = cars.id
   AND cp1.property_id = 1
  JOIN car_properties AS cp2
    ON cp2.car_id = cars.id
   AND cp2.property_id = 2
;

请格式化您的SQL代码。不要把整件事放在一条长线上。你会在这里找到很多关于这种情况的答案:你的问题表明你的car\u properties表的结构是car\u properties{property\u id,value}。如果是这种情况,您可能会发现建议重新设计此属性,以便每个唯一属性(属性ID)都是一个单独的列。它将帮助您避免这种情况。@obserobot完全正确。抱歉。@Carth谢谢,但我真的认为这不适合我的特定应用程序。