SQL中的三种不同表查询
表:公司SQL中的三种不同表查询,sql,join,Sql,Join,表:公司 ID | companyName ................................ 1 | company1 2 | company2 3 | company3 4 | company4 表:发票 ID | companyID ................................ 1 | 1 2 | 1 3 | 3 4 | 2 表:发票输入 ID | invoiceID | inputTotal
ID | companyName
................................
1 | company1
2 | company2
3 | company3
4 | company4
表:发票
ID | companyID
................................
1 | 1
2 | 1
3 | 3
4 | 2
表:发票输入
ID | invoiceID | inputTotal
................................
1 | 1 | 100
2 | 1 | 200
3 | 1 | 123
4 | 3 | 211
字段总数为
描述:我有表公司中的公司基础,表发票中的发票注意,多个发票可以应用于一个公司,发票输入表中的发票内容。多个发票输入项可以应用于一张发票。在invoice.companyID到companys.ID和invoice.invoiceID到invoice.ID上都有外键
所以我想要这样的结果:
companyName | sum of totals
...............................................
company1 | 423
company2 | 0
company3 | 0
company4 | 211
所以“总计”列应该包含数据,即为某个公司开具的所有发票中的所有总计的总和
我希望我描述得很好。试试这个:
对于MySQL:
SELECT Com.CompanyName,IFNULL(SUM(InvIn.InputTotal),0) as SumOfTotal
FROM companies Com LEFT JOIN
Invoice Inv ON Inv.CompanyID=Com.ID LEFT JOIN
InvoiceInput InvIn ON InvIn.InvoiceID=Inv.ID
GROUP BY Com.CompanyName
ORDER BY Com.CompanyName
对于SQL Server,将IFNULL替换为ISNULL
结果:
COMPANYNAME SUMOFTOTAL
company1 423
company2 0
company3 211
company4 0
请参见中的结果。您确定公司3的sum为0吗?在我看来,您似乎将公司4误认为公司3。这是一个带有group by的非常基本的联接查询。你尝试了什么?@Mihai你是对的,我马上就来编辑帖子。…@GordonLinoff我尝试了加入和分组,我也尝试了:选择companys.category,companys.companyName,从invoiceinput中选择SUMinvoiceinput.total,其中invoice.companyesId=51加入发票上的发票。ID=invoiceinput.invoiceID-选择SUMincome.income FROM income作为公司债务我尝试了更多的方法,但没有任何方法对我有效:谢谢你,非常好用。