【问题标题】:Generate Access report from multiple queries从多个查询生成访问报告
【发布时间】:2018-04-11 23:01:45
【问题描述】:

我浏览了有关此主题的一些答案,但他们都建议使用 UNION 查询,我很确定这不是我的方法,因为我尝试从中提取数据的表根本不同。我会尽力解释。

我有三张桌子:

  • 客户
  • 约会
  • 购买

我希望用户能够选择一个客户并获得包含以下信息的报告:

  • 所有客户信息(姓名、电子邮件、地址等)
  • 客户预订的所有约会
  • 客户进行的所有购买

当客户在数据库中没有约会或购买时出现问题,因为我目前使用的单个查询执行以下操作:

SELECT (info needed)
FROM (Customer INNER JOIN Purchase ON Customer.ID = Purchase.customerID)
INNER JOIN Appointment ON Customer.ID = Appointment.customerID;

如果客户在 Purchase 或 Appointment 表中没有其 customerID,则生成的查询将返回一个空表,因为 JOIN 将无法看到表之间的任何共享数据。

我不确定最好的行动方案是什么,我希望这里的人可以阐明在这种情况下的最佳做法是什么,在此先感谢。

建议进行编辑以添加一些示例数据和所需的结果。

客户

ID   Name  email           address
 1   Bob   bob@gmail.com   70 bowman st.
 2   Tom   tom@gmail.com   44 shirley av.
 3   Mary  mary@gmail.com  4 goldfield rd.

购买

customerID itemID price
1          23     100
1          24     150
3          34     85

约会

customerID date
1          2/10
2          3/10
3          3/10

现在,如果我使用 customerID = 2 进行查询,我想要以下信息

客户信息

name   email          address
Tom    tom@gmail.com  44 shirley av.

购买

empty

约会

date
3/10

【问题讨论】:

  • 编辑您的问题并提供示例数据和所需的结果。

标签: sql ms-access report


【解决方案1】:

使用左连接而不是内连接。这样即使他没有预约或购买,你也能得到客户的详细信息

SELECT (info needed)
  FROM Customer Left 
  JOIN Purchase 
    ON Customer.ID = Purchase.customerID
Left JOIN Appointment 
  ON Customer.ID = Appointment.customerID;

【讨论】:

  • 我很笨,这正是我需要做的,感谢您的快速回复。
  • 没有一个是愚蠢的 :-) 有时我们会忘记......它的本质
  • 我要在这里问这个问题,因为它不保证另一个线程,您知道将报告分成两个详细信息部分的方法吗?我知道分组,但我真的没有任何东西可以分组,该页面仅适用于一个客户,两个部分应该是“所有约会”和“所有购买”。是使用子报表的唯一方法吗?
  • 将查询拆分为两个查询。一个有客户离开的加入购买。另一位客户离开加入约会。
  • 女士访问 - 这对我来说很新。抱歉帮不了你
猜你喜欢
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-20
  • 1970-01-01
相关资源
最近更新 更多