我有问题。问题是我无法使简单的查询工作。我正在使用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以及它背后可能存在的所有场所。 截图:
但是当我尝试执行子查询时它只是
SELECT Autos.Klasse
FROM Autos, Factuur
WHERE Autos.AutoNR = Factuur.AutoNR
它给了我正确的汽车级别。
我唯一需要的是与正确的发票匹配的前提。 该处所以汽车类为基础。该处所位于Prijzen餐桌。 谢谢,
答案 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。