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作为公司债务我尝试了更多的方法,但没有任何方法对我有效:谢谢你,非常好用。