LEFT JOIN无法正常工作

时间:2014-10-03 03:27:35

标签: php mysql sql join left-join

我需要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)来自fpo,其中empnum(注意:来自fpo)= empnum(注意:来自用户) 然后用empnumber和users表中的金额回显总和金额。

我需要为用户db中的每个人执行此操作。我现在在那里约有150人......

感谢您的时间和帮助!可能是一个简单的问题:(

2 个答案:

答案 0 :(得分:3)

您没有回显总和金额,$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,因为这两个表都有一个名为{{1的列}}。您的amount子句中也有user.empnum,但该列为ON

您应该按users.empid而不是users的列进行选择和分组,因为fpo可以返回LEFT JOIN中的列为fpo的行NULL没有匹配。

答案 1 :(得分:0)

这似乎对我有用。谢谢!

    result = mysqli_query($con,"select f.amount , u.empnum , u.amount , 
                                SUM(f.amount) AS total
                             FROM users AS u
                             LEFT JOIN fpo AS f ON f.empnum = u.empnum
                             GROUP BY u.empnum")

                              or die(mysqli_error($con));

while($row = mysqli_fetch_array($result)) {
      echo "Emp".$row['empnum']."----".$row['total']."----Amount----".$row['amount']."<br>";