繁体   English   中英

SQL 从 3 个表中选择数据

[英]SQL Select Data From 3 Tables

我正在为本地企业开发 C# 应用程序。 我想选择从SQL Server 2014数据库的3个表,即数据companyinfoinvmaininvtran

Companyinfo存储业务名称, invmain具有销售发票编号和日期信息,而invtran具有 Invoice Transaction。

我正在使用这样的 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

但是,如果表之一没有数据,则返回 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 条件以建立“链接”。 我选择了INNER JOIN ,它根据ON关键字后定义的匹配条件,只返回存在于所涉及的两个表中的行。

如果您想从companyinfo中选择没有任何相应发票的行,您还可以使用LEFT OUTER JOIN而不是INNER JOIN从没有任何发票的公司的companyinfo取回数据

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM