SQL Select 来自 3 个表的数据

SQL Select Data From 3 Tables

我正在为本地企业开发 C# 应用程序。我想从 SQL Server 2014 数据库的 3 table 中获取 select 数据,即 companyinfoinvmaininvtran

Companyinfo 存储公司名称,invmain 包含销售发票编号和日期信息,而 invtran 包含发票交易。

我正在使用这样的 SELECT 语句:

SELECT 
    companyinfo.name,    
    invmain.invno, invmain.date, invtrans.itemid, invtrans.unitprice 
FROM 
    companyinfo, invmain, invtrans
WHERE 
    companyinfo.Id = 1 
    AND invmain.invno = 13 
    AND invtrans.invnumber = 13

但如果 table 之一没有数据,则此 returns 为 null。还有其他有效的方法吗?

像这样使用 正确的 ANSI/SQL JOIN 语法

SELECT 
    ci.name,    
    invmain.invno, invmain.date, 
    invtrans.itemid, invtrans.unitprice 
FROM 
    companyinfo ci, 
INNER JOIN
    invmain m ON ci.companyId = m.companyId
INNER JOIN
    invtrans it ON it.invo = m.invno
WHERE 
    companyinfo.Id = 1 

并且您需要在表之间定义JOIN条件以建立"links"。根据ON关键字后定义的匹配条件,我选择INNER JOIN其中returns只涉及两个表中存在的行。

如果您想要 companyinfo 中没有任何相应发票的 select 行,您也可以使用 LEFT OUTER JOIN 而不是 INNER JOIN 来取回来自 companyinfo 的没有任何发票的公司的数据