Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL内部连接错误-where子句中的未知列“m.account\u no”_Mysql_Sql_Select_Join_Group By - Fatal编程技术网

MYSQL内部连接错误-where子句中的未知列“m.account\u no”

MYSQL内部连接错误-where子句中的未知列“m.account\u no”,mysql,sql,select,join,group-by,Mysql,Sql,Select,Join,Group By,我不知道该怎么称呼它,我正试图解释它 我有两张桌子: 一,。成员 二,。分享历史 一个成员可以有多个共享记录,我必须在下面的结构中显示它 给定年份的借方、贷方和期初余额合计 +-----------+------+-------+--------+---------+--------+ |account_no | name | debit | credit | balance | opening| +-----------+------+-------+--------+---------+--

我不知道该怎么称呼它,我正试图解释它

我有两张桌子:

一,。成员

二,。分享历史

一个成员可以有多个共享记录,我必须在下面的结构中显示它 给定年份的借方、贷方和期初余额合计

+-----------+------+-------+--------+---------+--------+
|account_no | name | debit | credit | balance | opening|
+-----------+------+-------+--------+---------+--------+
我尝试过这个,但失败了:

SELECT m.account_no, m.name, share.*
FROM `member` AS m
INNER JOIN (
    SELECT sth.account_no AS sth_account_no, SUM(sth.debit) AS sth_debit, SUM(sth.credit) AS sth_credit,(
    SELECT sth2.balance 
    FROM `share_trx_history` AS sth2 
    WHERE sth2.account_no=m.account_no
    ORDER BY sth2.share_issue_date ASC 
    LIMIT 0,1
) AS sth_balance, 
    (SELECT balance
        FROM `share_trx_history` AS sth3
        WHERE year(sth3.share_issue_date ) <2014 AND sth3.account_no=m.account_no
        ORDER BY sth3.share_issue_date DESC
        LIMIT 0 , 1) AS sth_opening 
FROM `share_trx_history` AS sth 
WHERE sth.share_issue_date >= DATE_SUB(NOW(), INTERVAL 1 Year)
AND sth.account_no=m.account_no) AS share
ON share.sth_account_no =  m.account_no
有什么简单的方法可以实现吗

我的问题出了什么问题

多谢各位

更新:

余额=借方总额+股利总额-贷方总额

请检查期初=上一年余额

尝试以下操作:

SELECT m.account_no, m.name, SUM(sth.debit) AS sth_debit, SUM(sth.credit) AS sth_credit, 
       MAX(CASE share_issue_date WHEN start_date THEN balance ELSE 0 END) AS sth_balance, 
       MAX(CASE share_issue_date WHEN opening_date THEN balance ELSE 0 END) AS sth_opening
FROM `member` AS m 
INNER JOIN share_trx_history AS sth ON m.account_no = sth.account_no
INNER JOIN (SELECT account_no, MIN(share_issue_date) start_date, MAX(share_issue_date) opening_date
            FROM share_trx_history WHERE YEAR(share_issue_date) <2014 GROUP BY account_no
          ) AS A ON sth.account_no = A.account_no AND share_issue_date IN (start_date, opening_date)
WHERE sth.share_issue_date >= DATE_SUB(NOW(), INTERVAL 1 YEAR)
GROUP BY m.account_no

谢谢@Saharsh Shah的帮助,但是,余额=借方+设备和贷方,请检查期初=上一年的余额,您的答案非常正确helpful@Saharsha等等,先生,这是一种兴趣,只需将其视为一列添加到debitCan中即可共享表结构http://sqlfiddle.com/?ok 我在sqlfiddle上分享它
SELECT m.account_no, m.name, SUM(sth.debit) AS sth_debit, SUM(sth.credit) AS sth_credit, 
       MAX(CASE share_issue_date WHEN start_date THEN balance ELSE 0 END) AS sth_balance, 
       MAX(CASE share_issue_date WHEN opening_date THEN balance ELSE 0 END) AS sth_opening
FROM `member` AS m 
INNER JOIN share_trx_history AS sth ON m.account_no = sth.account_no
INNER JOIN (SELECT account_no, MIN(share_issue_date) start_date, MAX(share_issue_date) opening_date
            FROM share_trx_history WHERE YEAR(share_issue_date) <2014 GROUP BY account_no
          ) AS A ON sth.account_no = A.account_no AND share_issue_date IN (start_date, opening_date)
WHERE sth.share_issue_date >= DATE_SUB(NOW(), INTERVAL 1 YEAR)
GROUP BY m.account_no