我已经浏览了一些关于这个主题的答案,但他们都建议使用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
答案 0 :(得分:1)
使用左连接而不是内连接。因此,即使他没有预约或购买,您也可以获得客户详细信息
SELECT (info needed)
FROM Customer Left
JOIN Purchase
ON Customer.ID = Purchase.customerID
Left JOIN Appointment
ON Customer.ID = Appointment.customerID;