我目前正在使用 2 个表。一张客户表和一张他们拥有的发薪日贷款表。
我写的查询需要获取客户的未偿还贷款金额如下:
SELECT * FROM tblcustomer
WHERE pkcustomerid IN
(SELECT fkcustomerid
FROM
(SELECT * FROM tblloan
WHERE outstandingcurrentamount!="NULL") AS T)
如果客户的未清金额不为 NULL 或 0,则返回客户数据列表。现在我需要循环此结果并对每个客户执行单独的查询以获取他们的所有贷款。但我只需要计数。
有没有办法以某种方式向查询返回的数据添加一个额外的列,该列是该客户的贷款计数?
表结构的相关部分:
CREATE TABLE IF NOT EXISTS `tblcustomer` (
`pkcustomerid` bigint(20) NOT NULL AUTO_INCREMENT,
`fkuserid` int(11) NOT NULL,
`fkstoreid` int(11) NOT NULL,
`fkcompanyid` int(11) NOT NULL,
`fkstaticid` varchar(255) NOT NULL,
...snip...
PRIMARY KEY (`pkcustomerid`,`fkcountryid`,`fkcityid`,`fkstateid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=821 ;
CREATE TABLE IF NOT EXISTS `tblloan` (
`pkloanid` int(11) NOT NULL AUTO_INCREMENT,
`fkuserid` int(11) NOT NULL,
`fkcustomerid` int(11) NOT NULL,
`fkstoreid` int(11) NOT NULL,
`outstandingcurrentamount` double NOT NULL
...snip...
PRIMARY KEY (`pkloanid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1567 ;
最佳答案
尝试
SELECT t.*, q.loan_count
FROM tblcustomer t JOIN
(
SELECT c.pkcustomerid, COUNT(*) loan_count
FROM tblcustomer c LEFT JOIN tblloan l
ON c.pkcustomerid = l. fkcustomerid
WHERE l.outstandingcurrentamount IS NOT NULL
AND l.outstandingcurrentamount > 0
GROUP BY c.pkcustomerid
) q ON t.pkcustomerid = q.pkcustomerid
关于MySQL 查询计算查询中 2 层深处的记录数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16865061/