SQL Select 来自 3 个表的数据
SQL Select Data From 3 Tables
我正在为本地企业开发 C# 应用程序。我想从 SQL Server 2014 数据库的 3 table 中获取 select 数据,即 companyinfo
、invmain
、invtran
。
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
的没有任何发票的公司的数据
我正在为本地企业开发 C# 应用程序。我想从 SQL Server 2014 数据库的 3 table 中获取 select 数据,即 companyinfo
、invmain
、invtran
。
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
的没有任何发票的公司的数据