我目前正在使用3个表:POV,访问和音量。
我所依据的主要表格是POV,其中包含来自销售点的所有主要信息。
每个销售点的成交量包含销售点提供的每件产品的最近2年的数量。
访问包含每个销售点的访问日期。
我希望拥有的大桌子就是这样的:
POV columns | Volumes columns | Visit columns
POV values | Volume values | Null
POV values | null | Visits
所有表格都有一个名为“povId”的列,其中包含每个销售点的唯一标识符。所以我可以用它来“链接”它们。
请问您应该如何继续获取上述内容?
我知道工会会有所帮助,但我不知道如何继续。我希望显示POV的所有销售点(例如,如果VOlume中没有数据,我想要null)。
提前多多谢谢你!干杯!
**更新**双左连接代码:
Select * from (SELECT
[POV].[PovId] AS [PovId],
[POV].[Last Visit Date] AS [Last Visit Date],
[Visit].[VisitCode] as [VisitCode]
FROM [dbo].[POV] [POV]
LEFT JOIN [dbo].[Visit] [Visit] ON ([POV].[PovId] = [Visit].[PovId])) Tbl1 left join ( SELECT [POV].[PovId] AS [PovId2],
[Volume].[Volume] AS [Volume],
[Volume].[TMO] AS [TMO],
[Volume].[Brand Family] AS [Brand Family]
FROM [dbo].[POV] [POV]
LEFT JOIN [dbo].[Volume] [Volume] ON ([POV].[PovId] = [Volume].[PovId])
where [Volume].[Year] between year(getdate())-1 and year(getdate())) Tbl2 on Tbl1.[PovId]=Tbl2.[PovId2]
答案 0 :(得分:0)
绝对是联盟不是要走的路。您尝试做的是LEFT JOIN
。
来自MySQL中的[LEFT JOIN][1]
文档:
MySQL实现了一个A LEFT JOIN B join_condition,如下所示:
[...]
如果A中有一行与WHERE子句匹配,但没有 在B中与ON条件匹配的行,生成额外的B行 将所有列设置为NULL。
你想要做的事情如下:
SELECT POV.*, Visit.*, Volume.* FROM POV LEFT JOIN Visit ON POV.id = Visit.povId LEFT JOIN Volume ON POV.id = Volume.povId
可能会在WHERE或LEFT JOIN条件中添加其他条件,但要小心!因为结果可能不一样。
这就是说,您希望通过添加更多信息(例如示例等)来改进问题。通过这种方式,整个社区将更多地利用我们的交流。
答案 1 :(得分:0)
尝试这样的事情:
SELECT
[POV].[PovId] AS [PovId],
[POV].[Last Visit Date] AS [Last Visit Date],
[Visit].[VisitCode] as [VisitCode]
FROM [dbo].[POV] [POV]
LEFT JOIN [dbo].[Visit] [Visit] ON ([POV].[PovId] = [Visit].[PovId])
LEFT JOIN [dbo].[Volume] [Volume] ON ([POV].[PovId] = [Volume].[PovId])
where [Volume].[Year] between year(getdate())-1 and year(getdate())
答案 2 :(得分:0)
感谢您的帮助。我设法得到了我想要的东西。 我在POV和Visit之间进行了左连接,另一个在POV和Volume之间,然后是两者的联盟。 工作完美!再次感谢大家!