php - 使用求和函数时,我的查询返回单条记录

标签 php mysql sql

我有以下表结构,关系是一个 purchase_order 有多个 purchase_order_detail 和一个 purchase_order_detail 有多个 delivery_order; 采购订单

+-------------------+-------------------------+
| purchase_order_id | purchase_order          |
+-------------------+-------------------------+
|                29 | Dell Computer 000001256 |
|                31 | Dell Computer 000001257 |
+-------------------+-------------------------+

purchase_order_detail

+--------------------------+-------------------+---------+------------------+
| purchase_order_detail_id | purchase_order_id | item_id | ordered_quantity |
+--------------------------+-------------------+---------+------------------+
|                       26 |                29 |     279 |              100 |
|                       27 |                29 |     286 |              100 |
|                       28 |                29 |     287 |              100 |
|                       29 |                31 |     279 |               75 |
|                       30 |                31 |     286 |               85 |
+--------------------------+-------------------+---------+------------------+

delivery_order

+-------------------+--------------------------+-------------------+
| delivery_order_id | purchase_order_detail_id | recieved_quantity |
+-------------------+--------------------------+-------------------+
|                30 |                       26 |                50 |
|                31 |                       27 |                50 |
|                32 |                       28 |                50 |
|                33 |                       29 |                25 |
|                34 |                       30 |                35 |
+-------------------+--------------------------+-------------------+

我想在 purchase_order_detail 表中获取 item_id 的 purchase_order 和总接收数量, 我写了这个查询,但是它返回了不正确的记录

SELECT po.created_on, po.purchase_order_id, po.purchase_order, i.item_name, SUM( do.recieved_quantity ) AS quantity
FROM purchase_order po, purchase_order_detail pod, delivery_order do , item i
WHERE i.item_id = pod.item_id
AND po.purchase_order_id = pod.purchase_order_id
AND pod.purchase_order_detail_id = do.purchase_order_detail_id
AND pod.item_id =286

+---------------------+-------------------+-------------------------+-----------+----------+
| created_on          | purchase_order_id | purchase_order          | item_name | quantity |
+---------------------+-------------------+-------------------------+-----------+----------+
| 2015-02-23 13:49:40 |                29 | Dell Computer 000001256 | Lenovo    |       85 |
+---------------------+-------------------+-------------------------+-----------+----------+

如您所见,item_id 286 对应两个 purchase_orders。

最佳答案

您错过了 group by 子句:

SELECT po.created_on, po.purchase_order_id, po.purchase_order, i.item_name, SUM( do.recieved_quantity ) AS quantity
FROM purchase_order po, purchase_order_detail pod, delivery_order do , item i
WHERE i.item_id = pod.item_id
AND po.purchase_order_id = pod.purchase_order_id
AND pod.purchase_order_detail_id = do.purchase_order_detail_id
AND pod.item_id =286
group by po.created_on, po.purchase_order_id, po.purchase_order, i.item_name

关于php - 使用求和函数时,我的查询返回单条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28689909/

相关文章:

php - 将php数组插入mysql

sql - 通过过滤找出mysql中json数组中所有元素的总和

mysql - Rails 左连接并包含不存在的左表记录

php - 在没有 curl 的情况下在后台运行 php 脚本

php - 否则更新类别回显显示图像

PHP:PEAR:使用 Crypt_CBC 加密,使用 Perl 的 CBC 解密

mysql - 如何根据条件排序?

mysql - 无法连接到数据库服务器。找不到数据库 jimbob_jc

php - 如何使用?标记绑定(bind) PDO 中的值?

c# - 通过 C# 进行 Windows 桌面搜索