我正在为 MySQL 查询中的 JOIN 苦苦挣扎。不知何故,我无法找出为什么我的结果不是我想要的。
我有两张桌子,一张桌子订单和一张桌子产品。表产品包含订单的 order.id。所以一个订单可以有多个产品,例如表 products 包含两个订单记录。
我需要的结果是产品的增值税为 21 的所有订单。
表示例。
orders
id | customer
---------------
1 | John Doe
2 | Hello World
order_products
id | order_id | product | vat
1 | 1 | Porsche 911 GT4 | 21
2 | 1 | Audi R8 LMS | 21
3 | 1 | Ferrari Enzo | 19
3 | 2 | Bugatti Veyron | 19
不,我想要所有产品增值税为 21 的订单。所以我将在 order_products 表上执行 LEFT JOIN:
SELECT orders.id, orders.customer, order_products.product FROM orders LEFT JOIN order_products ON orders.id = order_products.order_id WHERE order_products.vat = '21'
这将返回以下内容:
1 John Doe Porsche
1 John Doe Audi R8 LMS
但我只需要一个结果,因为 orders.id 对我很重要,而不是订单中的所有产品。我只加入 order_products 以获得仅含增值税 21 的订单。目前我没有解决此问题的选项。即使在阅读了有关此站点和其他站点上的加入的几个主题之后。