如何调用WHEN子句中的子查询 - Mysql

时间:2016-11-06 18:40:40

标签: mysql sql sqlite

我有两张桌子:

产品

id name  category
1  AAA    BBB
2  CCC    DDD
3  EEE    FFF

勋章

id id_product     date
1      2       10/11/16
2      2       06/16/16
3      3       12/09/16
4      1       02/06/16
5      3       15/10/16

为了知道产品是否有订单,我创建了这个选择查询:

SELECT id,name ,category 

CASE WHEN id IN (select id_product from Ordre) then 'Y'
       ELSE 'N' END AS has_ordre

FROM product;

但这对我不起作用,事实上我想创建一个包含产品信息的视图,并且还有列#34; has_ordre"检查产品是否具有ordre。

你有什么建议吗? 我是Mysql的新手 提前谢谢。

1 个答案:

答案 0 :(得分:0)

您可以在没有子查询的情况下执行所需操作,方法是在两个表上执行连接,并在order.id_product上执行COUNT(),这将计算每个产品的订单数。注意:此查询将完全(按设计)排除没有订单的产品。此外,此特定查询的结果将显示每种产品的订单数量:

SELECT p.id, p.name, p.category, COUNT(o.id_product) AS num_orders
FROM product p
    RIGHT JOIN order o
        ON p.id = o.id_product
GROUP BY p.id
ORDER BY num_orders

如果您想显示所有订单而不管他们是否有有效订单,您可以将RIGHT JOIN更改为LEFT JOIN:

Here is a fiddle