无法使子查询工作

时间:2015-01-10 14:07:36

标签: database ms-access

我有问题。问题是我无法使简单的查询工作。我正在使用MS-Access。 基本上我必须制作一个获得Premises(Borg)的发票(Factuur)。我正在使用此查询

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

但是通过该查询,我得到了所有InvoiceNR以及它背后可能存在的所有场所。 截图: Screenshot

但是当我尝试执行子查询时它只是

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

它给了我正确的汽车级别。

enter image description here

我唯一需要的是与正确的发票匹配的前提。 该处所以汽车类为基础。该处所位于Prijzen餐桌。 谢谢,

3 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

是的,当您尝试单独执行它时,问题出现在子查询中,它会为您提供结果。但是当你将它与主查询结合起来时它不会工作,所以在子查询中添加一个组并给出答案。 例如:“SELECT Autos.Klasse 来自Autos,Factuur 在哪里Autos.AutoNR = Factuur.AutoNR group by Prijzen.Borg“;

答案 2 :(得分:0)

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

返回标量(单数)值。

所以当你做Klasse =(SELECT ...)时。它相当于写Klasse = true,或Klasse = 3,或Klasse = null。