【问题标题】:How to select and count data from three tables in mysql如何从mysql中的三个表中选择和统计数据
【发布时间】:2019-10-03 06:59:17
【问题描述】:

我有三张桌子

1 - Products 
2- Orders
3- Order_item 

表(产品)

ID | Product_name | 
--------------------
1  | Samsung Galaxy 

表格(订单)

ID | Client_name 
-------------------
1  | Admin

表格(Orders_item)

ID | Order_ID | Product_ID | Quantity 
-------------------------------------
1  | 1        | 1          | 1

2  | 1        | 1          | 1 

3  | 1        | 1          | 1 

我想在订单为1时选择产品名称,客户名称和数量。我试过这个查询

SELECT products.name,orders.order_id,orders.client_name,order_item.quantity COUNT(*) FROM products,orders,order_item WHERE products.id = order_item.product_id AND orders.order_id = order_item.order_id AND orders.order_id=1 

返回类似

的结果
Name | Order_ID | Client_name | Quantity 
----------------------------------------
Sa..| 1         | Admin       | 1 
Sa..| 1         | Admin       | 1 
Sa..| 1         | Admin       | 1

我想得到类似的结果

Samsung | 1 | Admin | 3 

请有人帮帮我。

【问题讨论】:

  • 请注意,我们停止以这种方式编写查询 ca。 1992. 参见 JOIN。然后看看 GROUP BY。
  • 为 Strawberry 的评论提供上下文:请不要使用基于旧逗号的隐式连接并使用现代 Explicit JOIN based syntax
  • 另外,提示:您需要在订单和产品上GROUP BY。值得一看的关于 SQL 中 GROUP BY 的教程

标签: mysql rdbms


【解决方案1】:

你需要一个GROUP BY

SELECT products.Product_name AS Name,
       orders.id AS Order_ID,
       orders.client_name AS Client_name,
       SUM(order_item.Quantity) AS Quantity
FROM products
LEFT JOIN order_item 
ON order_item.Product_ID = products.ID
LEFT JOIN orders
ON orders.ID = order_item.Order_ID
WHERE orders.id=1
GROUP BY products.Product_name,
         orders.id,
         orders.client_name

这个输出:

| Name           | Order_ID | Client_name | Quantity |
| -------------- | -------- | ----------- | -------- |
| Samsung Galaxy | 1        | Admin       | 3        |

请注意,JOIN 也可以是一个很好的阅读材料。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-16
    • 2018-01-11
    • 1970-01-01
    相关资源
    最近更新 更多