2016-04-23 88 views
0

如何查找一個表的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)。

非常感謝您的幫助!

回答

0

你可以試試子查詢:

SELECT Kontonr , Name FROM Geldkonto 
WHERE Kontonr in (SELECT DISTINCT Ursprungskonto FROM Beleg 
WHERE YEAR (Valuta) = 2016) 
+0

這一個有一個額外的好處:我可以很容易地限制結果更多使用第二張桌子上(Geldkonto)的過濾器。例如,添加'AND Kontonr> 1210' –

+0

它確實提供了Beleg表的DISTINCT結果。剛剛嘗試過。 –

+0

@GaryCzychi:當然,你是對的,對不起。 – dnoeth

0

你可以使用內部連接

SELECT DISTINCT Beleg.Ursprungskonto, Geldkonto.Name 
FROM Beleg 
INNER JOIN Geldkonto 
ON Beleg.Ursprungskonto=Geldkonto.Kontonr; 
0

而不是之後將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的任何其他列,那麼它很有用。