MySQL Join запрос на кредитный баланс - PullRequest
0 голосов
/ 09 декабря 2018

Я пытаюсь создать запрос MySQL для получения баланса (sum(col1)-Sum(col2)) из одной таблицы вместе с именем этого идентификатора пользователя из другой таблицы.

-------
table: user
--------
name userid
Kashif Mehmood U001
Kamran Ahmad33 U004
Junaid Akram U006
-------

table: taccbalance, 
--------
userid amountin amountout
U001  5000.00 NULL
U001 NULL 1000.00
U001 10000.00 NULL
U001 NULL 9000.00
U002 10000.00 NULL
U002 NULL 9000.00
U002 5000.00 NULL
U002 NULL 3000.00
-----------------------

запрос для получения баланса:

SELECT userid, SUM(amountin)-SUM(amountout) AS balance
FROM taccbalance
GROUP BY userid;

Однако, если я сделаю соединение с ним, оно не будет работать

SELECT a.name, b.userid, b.balance
FROM user AS a
INNER JOIN 
    (SELECT userid, SUM(amountin)-SUM(amountout) AS balance
     FROM taccbalance GROUP BY userid) AS b
ON a.userid = b.userid;

Он просто вернет только одну строку, скорее он должен вернуть несколько строк.

Может кто-нибудь помочь, пожалуйста?

1 Ответ

0 голосов
/ 09 декабря 2018

попробуйте использовать левое соединение

    SELECT a.name, b.userid, b.balance
    FROM user AS a
    LEFT JOIN 
        (SELECT userid, SUM(amountin)-SUM(amountout) AS balance
         FROM taccbalance 
         GROUP BY userid
    ) AS b ON a.userid = b.userid;

и проверьте, что для пользователя U002 у вас нет этого значения в пользовательской таблице

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...