将两个嵌套SELECT与DISTINCT结合在一起?
问题描述:
如何查找一个表的DISTINCT值,在另一个表中查找每个名称并获取值和名称作为结果?将两个嵌套SELECT与DISTINCT结合在一起?
的毕烈格表看起来像这样:
SELECT DISTINCT Ursprungskonto FROM Beleg
WHERE YEAR (Valuta) = 2016
打动了我:
1000
1210
1220
1230
对于每个值,我需要查找它的名字:
SELECT Name FROM Geldkonto
WHERE Kontonr = 1000
结果:
Kasse
在查询结束后,我需要有这样的结果:
1000 Kasse
1210 OneBankName
1220 AnotherBankName
1230 YABN
我使用的是SQL-92(的Filemaker)。
非常感谢您的帮助!
答
你可以试试子查询:
SELECT Kontonr , Name FROM Geldkonto
WHERE Kontonr in (SELECT DISTINCT Ursprungskonto FROM Beleg
WHERE YEAR (Valuta) = 2016)
答
你可以使用内部连接
SELECT DISTINCT Beleg.Ursprungskonto, Geldkonto.Name
FROM Beleg
INNER JOIN Geldkonto
ON Beleg.Ursprungskonto=Geldkonto.Kontonr;
答
而不是之后将DISTINCT 的你一起做的更好前:
SELECT k.Kontonr, k.Name
FROM Geldkonto AS k
JOIN
(
SELECT DISTINCT Ursprungskonto
FROM Beleg
WHERE YEAR (Valuta) = 2016
) AS b
ON k.Kontonr = b.Ursprungskonto
This类似于@ rev_dihazum的解决方案,只需使用连接而不是子查询,如果您需要Beleg
的任何其他列,那么它很有用。
这一个有一个额外的好处:我可以很容易地限制结果更多使用第二张桌子上(Geldkonto)的过滤器。例如,添加'AND Kontonr> 1210' –
它确实提供了Beleg表的DISTINCT结果。刚刚尝试过。 –
@GaryCzychi:当然,你是对的,对不起。 – dnoeth