【问题标题】:Sql statement ((join?) to fetch result from multiple tablesSql 语句 ((join?) 从多个表中获取结果
【发布时间】:2014-08-19 06:23:27
【问题描述】:

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

我有 3 张桌子。

现在我期待的是对于我想要的任何特定公司的这样的结果。 假设我正在寻找 Company1 ..这应该是结果。如果在特定日期没有进行购买..它应该是空白的..同样在付款的情况下

我怎样才能使用 SQL 语句得到这个结果..

【问题讨论】:

  • 我有解决方案,但请先告诉我,到目前为止您尝试了什么?
  • 我只知道一些简单的 Sql 查询..这种加入和联合不符合我的要求..我正在为自己做一个项目,只是被这个卡住了..这就是我问的原因它在这里

标签: sql .net ms-access join


【解决方案1】:

您正在寻找的是完全外部联接。您可以在 MS Access 中使用多个语句和 Union 构建等效的 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"

【讨论】:

  • 还有一个疑问......如何修改 sql 查询,如果我想要公司名称也在结果中。
【解决方案2】:

在这里,我们会在每个日期获得名为“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)

【讨论】:

  • 请格式化您的帖子。还提供其作用的简要说明。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 2012-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多