我有两张桌子:
产品:
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的新手 提前谢谢。答案 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: