获取SQL连接派生表以显示单个行

时间:2018-12-18 21:02:46

标签: mysql sql

所以我正在使用以下查询:

SELECT products.id
    , products.Name
    , products_orders.productQty
FROM orders
JOIN products_orders
ON orders.id = products_orders.order_id
JOIN products
ON products_orders.product_id = products.id
WHERE orders.id = @OrderId;

@OrderId = 7,我也有一个产品ID,最终我试图在订单中查找单个产品的数量。

当前,这将返回如下表:

+----+-----------+------------+
| id | Name      | productQty |
+----+-----------+------------+
|  1 | sourdough |          2 |
|  3 | Ciabatta  |          3 |
+----+-----------+------------+

这是订单中的每个项目及其数量,但是我只是想根据第一列中的ID查找单个项目。

有没有一种方法可以缩小这张桌子,只显示我感兴趣的物品和数量?

例如

如果order.id = 7,并且product.id = 3(对于ciabatta,这是其外键) 我想返回一个看起来像这样的派生表,但是我不知道如何编写查询:

+----+-----------+------------+
| id | Name      | productQty |
+----+-----------+------------+
|  3 | Ciabatta  |          3 |
+----+-----------+------------+

1 个答案:

答案 0 :(得分:3)

在查询中添加AND products.id = @ProductId有什么问题?就像

SELECT products.id
    , products.Name
    , products_orders.productQty
FROM orders
JOIN products_orders
ON orders.id = products_orders.order_id
JOIN products
ON products_orders.product_id = products.id
WHERE orders.id = @OrderId
AND products.id = @ProductID;