Мне нужна помощь с LEFT Join
первый дб «фпо»
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
** первый дБ "fpo" ** ID ---- empnum ----- сумма ----- Дата ------- 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 ** второй БД "пользователи" ** ID ---- сумма ----- EmpID ---- имя пользователя ---- пароль 1 ----- ----- 700,00 854245 --- админ ------- абв123 2 ----- ----- 500,00 123987 --- админ ------- абв123 3 ----- ----- 200,00 548798 --- админ ------- абв123
То, что я пытаюсь сделать, это sum(amount)
От fpo, где empnum (примечание: от fpo) = empnum (примечание: от пользователей)
затем отобразите суммированную сумму с помощью empnumber и суммы из таблицы users.
Мне нужно сделать это для всех пользователей в БД. У меня там сейчас около 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
,
Кажется, это работает для меня. Спасибо!
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>";