mysql查询未在order属性表上返回空行

5fjcxozz  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(315)

这个问题在这里已经有答案了

返回输入值的默认结果(2个答案)
两年前关门了。
我正在尝试执行一个查询,在该查询中,它从另一个表中检索属性和值。我遇到的问题是,它只返回与 order_property_values table。我希望它返回所有的结果,即使它不能在 order_property_values table。
这是我现在的疑问。

SELECT * FROM `properties` as t1 
    LEFT JOIN `order_property_values` AS t2 
    ON t1.`id` =  t2.`property_id` 
    WHERE t1.`id` 
        IN (SELECT `property_id` FROM `assigned_properties` 
            WHERE `component_id` 
               IN (SELECT `component_id` FROM assigned_components 
                   WHERE `product_id` = (SELECT `product_id` 
                                         FROM `order_items` 
                                         WHERE `id` = 1)
                  )
            ) AND t2.`order_id` = 13

这个查询以我想要的方式检索所有内容,但是没有空的匹配行。
这个 IN 只返回可能/可能不在 order_property_values table。
我试过了 NOT IN 还有 IS NULL 但似乎无法让它发挥作用。
提前谢谢你救了我一天。

2skhul33

2skhul331#

SELECT * FROM `properties` as t1 
    LEFT JOIN `order_property_values` AS t2 
    ON t1.`id` =  t2.`property_id` AND t2.`order_id` = 13
    WHERE t1.`id` 
        IN (SELECT `property_id` FROM `assigned_properties` 
            WHERE `component_id` 
               IN (SELECT `component_id` FROM assigned_components 
                   WHERE `product_id` = (SELECT `product_id` 
                                         FROM `order_items` 
                                         WHERE `id` = 1)
                  )
            )

相关问题