免责声明 - 我对SQL Server的了解有限。所以我提前道歉,如果这是一个'愚蠢'的问题。SQL Server查询和重复
查询的目的 - 从我们公司使用的程序中的多表数据库中收集信息并将结果存入我们的网络数据库,以便显示一些信息。
问题 - 重复信息。部分问题是数据库中有多个人员实例,所以会出现重复的结果......而其他重复来自联接。我需要将结果合并,以便仅使用相同的名称或代码(ID)存储一个结果。我想结合其余的信息,以便我不会丢失任何可能需要的信息。
这里是我的查询有:
SELECT people.Code AS [athlete-id],
people.Name AS [athlete-name],
people.DOB AS [DOB],
people.Division AS [agency-id],
certifs.[Expiration date] AS [expiration-date],
groups.Name AS [agency-name],
address.Addresses AS [address],
address.City AS [city],
address.State AS [state],
case when tags.Field = 'ABJD86GHKXXQWA9Q'
then tags.Value
end AS [restrictions],
case when tags.Field = 'VH2C78N9A15S059T'
then tags.Value
end AS [comments]
FROM people
LEFT OUTER JOIN certifs
ON people.Code = certifs.Owner
LEFT OUTER JOIN groups
ON people.Division = groups.Code
LEFT OUTER JOIN address
ON people.Code = address.Owner
LEFT OUTER JOIN tags
ON people.Code = tags.Owner
ORDER BY [agency-name], [athlete-name]
让我知道你可能有任何问题。我很感激帮助。
你为什么把它存入单独的数据库?你应该可以直接查询SQL Server数据库本身......另外,考虑到你引用'tags.Field'的方式,你似乎期望重复的行 - 将该子句添加为'JOIN'条件的一部分(并使用两个引用表,而不是一个)。如果你有重复的人员数据,那么这个问题应该单独解决。 – 2012-04-09 15:13:05
你能否澄清你的意思是“人的多个实例”?这是否意味着具有相同名称或代码或两者的行? “我希望合并的其他信息”是什么意思? – PepperBob 2012-04-09 15:52:16
他们需要存入一个单独的数据库,因为他们存在的地方不是可以从网络访问的数据库。一个cron作业运行...打开防火墙窗口...然后将信息转储到单独的数据库中。 “人员的多个实例” - 示例:名称:Bill Jones ID:12345 ...对于返回的20个结果是相同的...但是结果将返回其他字段的多个不同日期,如地址(由于地址更改)或评论,因为多个评论。 – 2012-04-09 16:41:32