【发布时间】:2012-09-22 00:30:39
【问题描述】:
我在生成适用于我所处情况的查询时遇到了一些困难。以下是详细信息...
1 个表 = 计费
1 个表 = 计费日期
billing = 基本上在生成发票时,它会使用主键、发票 id、用户 id、用户用户名、他们的实际姓名、发票日期、发票总额和付款在计费中创建一行制作
帐单日期 = 当向发票付款时,它会在帐单日期中创建一行,其中包含一个主键、一个 ID(与帐单表中的主键相同)、一个发票 ID(与账单中的发票 ID)、用户 ID(与账单中的用户 ID 相同)、支付日期、支付金额
我正在尝试创建一个帐龄报告,该报告将提取每张未结发票并将其显示在 PHP 中的 30/60/90/90+ 表中以显示给最终用户。因此,如果发票 #12 上有 100 美元的余额,以及两次 10 美元的付款,并且发票已有 60 天的历史,它将在报告中显示此信息。这是我所拥有的......
$sql17 = "SELECT
$mysql_billing.login_id, $mysql_billing.primary_key, $mysql_billing.a_name,
SUM($mysql_billing.custotal) AS finaltotal,
SUM($mysql_billing_dates.amount) AS paidtotal,
$mysql_billing.custotal - $mysql_billing_dates.amount AS total
FROM $mysql_billing
LEFT JOIN $mysql_billing_dates ON $mysql_billing.login_id = $mysql_billing_dates.login_id
GROUP BY login_id
ORDER BY a_name ASC";
当我运行它时,有些是正确的,而大多数不是。我无法弄清楚不一致是什么。任何想法将不胜感激,也许我走错了路?
更多
当我执行以下操作时,正确的值会显示...
SELECT
$mysql_billing.login_id, $mysql_billing.primary_key, $mysql_billing.a_name,
SUM($mysql_billing.custotal) AS finaltotal
FROM $mysql_billing
GROUP BY login_id
ORDER BY a_name ASC
但在原始示例中,它并不总是提取正确的值?
【问题讨论】:
-
你能显示示例数据和预期结果吗?
-
尝试使用连接而不是左连接(只是为了确认输出)然后检查,我认为空值可能会导致问题
-
结果如下... id_999333/263/john smith/250/300/-50
-
当只使用连接而不是左连接时,我确实得到了更多的结果,但它们彼此一致,各行中的原始值保持不变。
-
结果如下... id_999333/263/john smith/250/300/-50 应该是 id_999333/263/john smith/250/150/100