Sql语句((join?)从多个表中获取结果

时间:2014-08-19 06:23:27

标签: sql .net ms-access join

我在VB.net中使用Access数据库。

我有3张桌子。

enter image description here

现在我期待的是对于我想要的任何特定公司,这样的结果。 假如我正在寻找Company1 ..这应该是结果。如果购买还没有特定的日子..它应该是空白的..就像支付的情况一样 enter image description here

如何使用SQL语句获得此结果..

2 个答案:

答案 0 :(得分:4)

您正在寻找的是一个完整的外部加入。您可以使用多个语句和Union(删除重复项)在MS Access中构建等效的Full Outer join语句

我相信你可以使用如下内容:

SELECT a.Date, a.Gross, a.Net, a.Bonus, b.Paid as Payment
FROM Tab_Purchase a
LEFT OUTER JOIN Tab_Payments b ON a.Comp_ID = b.Comp_ID AND a.Date = b.Date
WHERE a.Comp_ID = "C1"
UNION
SELECT b.Date, a.Gross, a.Net, a.Bonus, b.Paid as Payment
FROM Tab_Payments b
LEFT OUTER JOIN Tab_Purchase a ON a.Comp_ID = b.Comp_ID AND a.Date = b.Date
WHERE b.Comp_ID = "C1"

答案 1 :(得分:1)

在这里,我们会在每个日期获得名为“Company1”的公司所需的详细信息。我相信这会对您有所帮助

尝试此查询:

select p.Date as Date,p.Gross as Gross,p.Net as Net,p.Bonus as Bonus,p1.Paid as Payment 
from Tab_Purchase p,Tab_Payments p1 
where (p.Comp_Id=(select c.Comp_Id 
from Tab_Comp c 
where Comp_Name='Company1')) 
and (p.Date=p1.Date)