我需要一些关于LEFT Join
的帮助
第一个数据库是“fpo”
id----empnum-----金额----日期----ponum
第二个数据库是“用户”
id----金额----empid----用户名----密码
我需要合计每个用户的 fpo 中的“金额”,并将总金额与用户的金额进行比较。
这是我现在的代码,但不起作用。
$result = mysqli_query($con,
"select fpo.amount , fpo.empnum , user.amount , user.fpo SUM(amount)
FROM LEFT JOIN fpo ON fpo.empnum = users.empnum GROUP BY empnum");
while($row = mysqli_fetch_array($result)) {
echo $row['empnum'];
echo "<br>";
echo $row['amount'];
}
由于某种原因,这不起作用......我做错了什么我从来没有使用过 JOIn 命令。
这是 mysql 中数据的样子
**first db is "fpo"** id----empnum-----amount-----date-------ponum 1-----854245-----5.00------9/7/14------12345 2-----123987-----8.00------9/7/14------12345 3-----123987-----5.00------9/7/14------12345 4-----854245-----15.00-----9/7/14------12345 5-----548798-----10.00-----9/7/14------12345 6-----854245-----30.00-----9/7/14------12345 **second db is "users"** id----amount-----empid----username----password 1-----700.00-----854245---admin-------abc123 2-----500.00-----123987---admin-------abc123 3-----200.00-----548798---admin-------abc123
我想做的是 sum(amount)
From fpo where empnum (note:from fpo) = empnum (note:from users)
然后用 empnumber 和用户表中的金额回显总金额。
我需要为用户数据库中的每个人执行此操作。我现在大约有 150 人......
感谢您的宝贵时间和帮助!可能是一个简单的问题:(
最佳答案
您没有回显总金额,$row['amount']
就是单行的数量,你想要$row['SUM(amount)']
。我建议您给它一个别名,以便更容易访问:
$result = mysqli_query($con,"select f.amount , u.empid , u.amount ,
u.fpo, SUM(u.amount) AS total
FROM users AS u
LEFT JOIN fpo AS f ON f.empnum = u.empid
GROUP BY u.empid") or die(mysqli_error($con));
while($row = mysqli_fetch_array($result)) {
echo $row['empnum'];
echo "<br>";
echo $row['total'];
}
您还缺少 SUM(amount)
之前的逗号, FROM
之后的表名,并且您需要符合 amount
资格与表名称,因为两个表都有一个名为 amount
的列。您还有user.empnum
在你的ON
子句,但该列是 users.empid
.
您应该选择 users
中的列并按其分组,不是fpo
,因为LEFT JOIN
可以返回 fpo
中的列所在的行是NULL
如果 users.empid
没有匹配项.
关于php - LEFT JOIN 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26172886/