2014-11-14 82 views
0

查询:如何从嵌套选择嵌套两个值? MySQL的

SELECT business.bussId, 
(select count(invoices.userId) from invoice where invoice.userId = '3000') 
as invoiceCount,  
(select SUM(invoices.price) from invoice where invoice.userId = '3000') 
as invoiceprice , 
FROM business WHERE business.bussId=100 

我怎么能拿使用发票价格和invoiceCount一个嵌套的选择?

+0

你可以把你的表吗? – 2014-11-14 12:52:20

回答

2

移动子查询到from条款:

SELECT b.bussId, i.invoiceCount, i.invoiceprice 
FROM business b cross join 
    (select count(i.userId) as invoiceCount, SUM(i.price) as invoiceprice 
     from invoice i 
     where i.userId = '3000' 
    ) i 
WHERE b.bussId = 100; 

实际上,你可以写这个没有子查询,但你的问题是专门关于使用子查询。

这形式是:

SELECT b.bussId, count(i.userId) as invoiceCount, SUM(i.price) as invoiceprice 
FROM business b left join 
    invoice i 
    on i.userId = '3000' and b.bussId = 100 
GROUP BY b.bussId; 
+0

谢谢你的回答,不,我不想用左连接,交叉连接做什么? – david 2014-11-14 13:01:23

+0

“交叉连接”在两个表格之间创建笛卡尔积。当其中一个表只有一行(在这种情况下大概是真的)时,它只是将额外的列添加到结果集中。 – 2014-11-14 13:03:00