Php 为什么我的查询只抓取3个项目而不是预期的金额?

Php 为什么我的查询只抓取3个项目而不是预期的金额?,php,mysql,Php,Mysql,这是我的问题 $request = "SELECT required_items.id, required_items.name, required_items.required_amount AS Amount_Required, COALESCE(SUM(donations.donation_amount),0) AS Amount_Donated FROM require

这是我的问题

$request = "SELECT
            required_items.id,
            required_items.name,
            required_items.required_amount AS Amount_Required,
            COALESCE(SUM(donations.donation_amount),0) AS Amount_Donated
            FROM required_items 
LEFT JOIN donations ON donations.item_id=required_items.id 
GROUP BY item_id ASC";

$stmt = $db->query($request);
$item_info = $stmt->fetchAll();
我只收到我的“所需项目”数据库中五个项目中的三个。我打算用这个来把他们全部带走。我会做错什么?我被难住了

在进一步的测试中,我注意到项目没有按升序与“item_id”分组

编辑: 以下是我对这个问题的看法:

预期的结果是以查询显示的方式列出数据库中的所有五项,而不是仅列出三项


编辑:我在错误的表中按列分组!“item_id”需要更改为“required_items.id”。

您在一个只选择了3行(两行有值,一行为空)的表上分组,您可以使用另一个表中的字段:

$request = "SELECT
            required_items.id,
            required_items.name,
            required_items.required_amount AS Amount_Required,
            COALESCE(SUM(donations.donation_amount),0) AS Amount_Donated
            FROM required_items 
LEFT JOIN donations ON donations.item_id=required_items.id 
GROUP BY required_items.id ASC"; // <- MODIFIED HERE

$stmt = $db->query($request);
$item_info = $stmt->fetchAll();
$request=“选择
所需的_items.id,
必需的\u items.name,
所需项目。所需金额作为所需金额,
合并(总和(捐赠.捐赠金额),0)作为捐赠金额
来自所需的\u项目
左侧加入捐赠上的捐赠。item\u id=必需的\u items.id
按所需项目进行分组\u items.id ASC”;//查询($请求);
$item_info=$stmt->fetchAll();

您确定您的查询返回的3个项目更多吗?你在数据库上测试过吗?当我通过phpmyadmin直接在数据库中运行此查询时,我只收到三项,因此它不能是我的任何其他代码。可能是GROUP BY子句导致了问题吗?有趣的是,当我删除GROUP BY子句时,我只收到数据库中的第一个条目…这里有点不对劲。我不擅长维护数据库。关于您的编辑,我认为您需要
按项目排序\u id ASC