2015-01-10 91 views
1

我遇到問題。問題是我無法獲得簡單的查詢工作。我正在使用MS-Access。 基本上我必須做一個發票(Factuur)得到物業(博格)。我正在使用此查詢無法獲得子查詢

SELECT Factuur.FactuurNR,Prijzen.Borg 
FROM Prijzen, Factuur 
WHERE Klasse IN 
(SELECT Autos.Klasse 
FROM Autos, Factuur 
WHERE Autos.AutoNR = Factuur.AutoNR); 

但是通過該查詢,我得到所有可能位於它後面的所有Premises的InvoiceNR。 截圖: Screenshot

但是當我嘗試和執行的子查詢只有它

SELECT Autos.Klasse 
FROM Autos, Factuur 
WHERE Autos.AutoNR = Factuur.AutoNR 

它給了我正確的汽車類。

enter image description here

我唯一需要的是,房產,利用正確的發票相匹配。 該處所基於汽車類。場地位於Prijzen餐桌。 謝謝,

回答

1

使用JOIN。試試這個方法:

SELECT Factuur.FactuurNR,Prijzen.Borg 
FROM ((Prijzen 
    INNER JOIN Autos ON Autos.Klasse = Prijzen.Klasse) 
    INNER JOIN Factuur ON Factuur.AutoNR = Autos.AutoNR) 
GROUP BY Factuur.FactuurNR,Prijzen.Borg; 
0

是的,問題是在子查詢中,當你試圖單獨執行它會給你結果。但是當你將它與主查詢結合起來時,它不會起作用,所以在子查詢中添加一個組並給出答案。 例如:「SELECT Autos.Klasse FROM Autos,Factuur WHERE Autos.AutoNR = Factuur.AutoNR group by Prijzen.Borg」;

0
(SELECT Autos.Klasse 
FROM Autos, Factuur 
WHERE Autos.AutoNR = Factuur.AutoNR); 

返回一個標量(單數)值。

所以當你做Klasse =(SELECT ...)。這相當於寫Klasse = true,或者Klasse = 3,或者Klasse = null。