2017-08-27 57 views
0

我有一个访问数据库,其中有几个表中的地址信息。 我创建了一条SQL语句,用于在查询中获取组合信息,并且工作正常。访问SQL:只选择在组合字段中出现一次的记录

我的下一步将是只获得记录在db中只有一个事件,但我似乎无法让它工作。

到目前为止我的代码将返回:(例子)

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 

我想,因为他们的组合式只发生一次只提取第一和最后一个记录。 Combi字段在最终结果中不需要,只是一种尝试使其发挥作用的方法。

我的代码:

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

'Perceel'表的主键是什么? 你试过GROUP BY/HAVING吗? – filiprem

+0

嗨,感谢您的回复。 perceel的主要关键是感知。当我通过什么都没有发生的事情发生时,如果我放入有访问权限给我一个错误(srry,真正的noob在这里:) –

回答

0

这不是最优雅的,但你可以重复相同的查询过滤使一个元素只组。

WHERE Combi IN (
    SELECT Combi FROM (<PASTE_YOUR_QURY_HERE>) AS something 
    GROUP BY Combi 
    HAVING count(*) = 1 
) 

PS。这也不利于性能 - 您应该修改子查询以删除不必要的连接)。

+0

好吧,我试图简化这个让我的头围绕它...这个代码: SELECT COUNT([Perceel.lengtegraad] [Perceel.breedtegraad])AS aantal,Pcreeks.wijkcode,Pcreeks.lettercombinatie, [Perceel.lengtegraad] [Perceel.breedtegraad] AS的Combi FROM Perceel INNER JOIN Pcreeks ON Perceel.reeksid = Pcreeks.reeksid WHERE(((Pcreeks.wijkcode)= “1234”)AND ((Pcreeks.lettercombinatie)= “AA”)) GROUP BY Pcreeks.wijkcode,Pcreeks.lettercombinatie, Perceel。 breedtegraad,Perceel.lengtegraad HAVING(((Count(Perceel.breedtegr AAD))<2)); –

+0

现在我得到一个地址,但是如果我添加一个字段,它将返回到1234AA范围内的所有地址。 –

相关问题