我有一个访问数据库,其中包含几个表中的地址信息。 我创建了一个SQL语句来在查询中获取组合信息,这样就可以了。
我的下一步是只获取数据库中只有一次出现的记录,但我似乎无法让它工作。
到目前为止,我的代码将返回:(示例)
combination lat/long postal_code letter_part house_number street name
123123 1234 aa 1 teststreet
123124 1234 aa 3 teststreet
123124 1234 aa 5 teststreet
123124 1234 aa 7 teststreet
123124 1234 aa 9 teststreet
123125 1234 aa 5 teststreet
我想只提取第一个和最后一个记录,因为它们的组合只出现一次。 最终结果中不需要组合字段,只是尝试使其工作的方法。
我的代码:
SELECT
[Perceel.lengtegraad] & [Perceel.breedtegraad] As Combi,
Pcreeks.wijkcode,
Pcreeks.lettercombinatie,
[huisnr] & " " & [huisnr_bag_letter] & " " & [huisnr_bag_toevoeging] AS
HnrLetter,
Straat.straatnaam
FROM
(Provincies
INNER JOIN (Plaats
INNER JOIN ((Gemeente
INNER JOIN Pcreeks
ON
Gemeente.gemeenteid = Pcreeks.gemeenteid)
INNER JOIN Perceel
ON
Pcreeks.reeksid = Perceel.reeksid) ON (Gemeente.gemeenteid =
Plaats.gemeenteid) AND (Plaats.gemeenteid = Pcreeks.gemeenteid) AND
(Plaats.plaatsid = Pcreeks.plaatsid)) ON Provincies.provincicode =
Pcreeks.provinciecode) INNER JOIN Straat ON (Pcreeks.straatid =
Straat.straatid) AND (Plaats.plaatsid = Straat.plaatsid)
where Pcreeks.wijkcode = "1234" AND Pcreeks.lettercombinatie = "AA";
任何帮助将不胜感激
答案 0 :(得分:0)
这不是最优雅,但您可以重复相同的查询以仅过滤具有一个元素的组。
WHERE Combi IN (
SELECT Combi FROM (<PASTE_YOUR_QURY_HERE>) AS something
GROUP BY Combi
HAVING count(*) = 1
)
PS。这对性能也不利 - 你应该修改子查询以删除不必要的连接。)