Php 选择包含WHERE子句之后的所有数据

Php 选择包含WHERE子句之后的所有数据,php,mysql,join,where-clause,Php,Mysql,Join,Where Clause,下午好 假设我有两张桌子。一个是带有汽车属性的表,另一个是带有汽车选项的表。我加入两个表,并希望根据下面的查询选择带有超低音扬声器的汽车。如果我希望选择带有超低音扬声器选项的汽车,但同时还希望显示该汽车的所有选项以及超低音扬声器选项,该怎么办 我的问题是,当我使用WHERE子句进行如下查询时,车选项中只显示低音炮,但我需要显示所有的车选项。另外,我需要使用php和html表单按车搜索选项,这样我就不能在WHERE子句中更改car_options.Name。有什么办法吗 选择CarName、add

下午好

假设我有两张桌子。一个是带有汽车属性的表,另一个是带有汽车选项的表。我加入两个表,并希望根据下面的查询选择带有超低音扬声器的汽车。如果我希望选择带有超低音扬声器选项的汽车,但同时还希望显示该汽车的所有选项以及超低音扬声器选项,该怎么办

我的问题是,当我使用WHERE子句进行如下查询时,车选项中只显示低音炮,但我需要显示所有的车选项。另外,我需要使用php和html表单按车搜索选项,这样我就不能在WHERE子句中更改car_options.Name。有什么办法吗

选择CarName、address、Price、Description、Car\u Options.Name 从Cars在Car\u Options.IdCar=CarName.IdCar上加入Car\u Options 其中Car_Options.Name=低音炮 卡尔纳姆集团
您可以联接选项表两次。大概是这样的:

选择c.CarName、c.Address、c.Price、c.Description、o.Name 来自c车 在Car\u Options.IdCar=Cars.IdCar上加入Car\u Options操作系统-用于通过超低音扬声器进行过滤 在Car\u Options.IdCar=Cars.IdCar上加入Car\u Options o-获取完整的选项列表 其中os.Name=低音炮
您的表名不一致。但是你想要这样的东西:

SELECT Cars.*, Car_Options.*
FROM Cars
JOIN Car_Options ON Car_Options.IdCar = Car.IdCar
WHERE Car.IdCar IN (SELECT IdCar FROM Car_Options WHERE Name="Subwoofer")
括号内的子选择将搜索带有超低音扬声器的汽车

SELECT
    CarName,
    Adress,
    Price,
    Description,
    GROUP_CONCAT(Car_Options) as AllOptions
FROM Cars
JOIN Car_Options ON Car_Options.IdCar = CarName.IdCar
WHERE EXISTS (SELECT 1 FROM Car_Options CO WHERE CO.IdCar = CarName.IdCar AND CO.Name = "Subwoofer")
GROUP BY CarName
我们将Cars表与Car_Options表连接起来,然后删除没有低音炮关联行的行组。我们将Car_选项连接到单个字段中

编辑:如上所述,上面的查询引用了不存在的CarName表。我一直误读这是汽车。卡纳姆。考虑到这一点,让我们假设一个名为IdCar的新专栏:


假设每个CarName都是不同的,具有不同的IdCar。

CarName.IdCar??这是什么?如果你喜欢的话,考虑一下这个简单的两步过程:1。如果您还没有这样做,请提供适当的CREATE和INSERT语句和/或SQLFIDLE,以便我们可以更轻松地复制问题。2.如果尚未这样做,请提供与步骤1中提供的信息相对应的所需结果集。这是两个表相互连接的地方。它是连接两个表的外键。如果您有一个名为carane的表,那将是正确的。这不合理地假设carname列是唯一的。但是carname表仍然不存在,使得这个查询变得毫无意义。@草莓哦哈。。我甚至没有注意到CarName.IdCar。我一直把它当作汽车来读。卡纳姆。
SELECT
    IdCar,
    CarName,
    Adress,
    Price,
    Description,
    GROUP_CONCAT(Car_Options) as AllOptions
FROM Cars
JOIN Car_Options ON Car_Options.IdCar = Cars.IdCar
WHERE EXISTS (SELECT 1 FROM Car_Options CO WHERE CO.IdCar = Cars.IdCar AND CO.Name = "Subwoofer")
GROUP BY IdCar