查询不包括指定的表达式 [英] Query does not include the specified expression
问题描述
我一直在使用MS Access的问题。我试图添加collumn但我有一个错误。
您的查询不包含指定的表达式BorgA作为聚合函数的一部分。
我使用的查询:
SELECT
SUM(A.TotaalPrijs)As TotaalPrijs,
A.AutoNR,
A.AutoKlasse,
MAX(A.Factuur.Dagen)as Dagen,
A.Prijzen.dag125KM as PrijsPerDag,
A.Prijzen.ExtraKM As PrijsPerExtraKM,
A.Factuur.FactuurNR,
A.Factuur.KlantNR,
A.Factuur.Begindatum,
A.Factuur.Einddatum,
A.Factuur.Borg,
Gegevens.voorletters,
Gegevens.wisgs,
Gegevens.achternaam,
Gegevens.straatnaam,
Gegevens.huisNR,
Gegevens.Postcode,
Gegevens.rekeningNR,
Gegevens。 Plaats,
A.KMteVEEL,
B.BorgA
FROM
(SELECT Factuur.Dagen,Factuur.AutoNR AS carNR,autos.AutoNR,autos.Klasse AS AutoKlasse,Prijzen.Klasse,Prijzen.dag125KM,Prijzen.ExtraKM,(prijzen.dag125KM * Factuur.Dagen)AS MinPrijs,Factuur.FactuurNR,Factuur.KlantNR,Factuur.Begindatum,Factuur.Einddatum,Factuur.Borg,(KMteVEEL * Prijzen]![ExtraKM])+([Prijzen]![dag125KM] * [Factuur]![Dagen])AS TotaalPrijs,Gegevens.voorletters,Gegevens.tussenvoegsel,Gegevens.achternaam,Gegevens.straatnaam,Gegevens.huisNR,Gegevens。 Postcode,Gegevens.rekeningNR,Gegevens.Plaats,IIf([Factuur]![EindKMStand] - [Factuur]![BeginKMStand] - ([Factuur]![Dagen] * 125) 0,0,[Factuur]![EindKMStand] - [Factuur]![BeginKMStand] - ([Factuur]![Dagen] * 125))AS KMteVEEL
FROM autos,Factuur,Prijzen,Gegevens
WHERE(((Factuur.AutoNR)= Autos.AutoNR)和((autos.Klasse)= Prijzen.Klasse)和((Factuur.KlantNR)= Gegevens.KlantNR))
)
(SELECT Prijzen.Borg as BorgA
FROM((Prijzen
INNER JOIN Autos ON Autos.Klasse = Prijzen.Klasse)
INNER JOIN Factuur ON Factuur.AutoNR = Autos.AutoNR ))AS B
GROUP BY
A.AutoNR,A.AutoKlasse,A.Prijzen.dag125KM,A.Prijzen.ExtraKM,A.Factuur.FactuurNR,A. Factuur.KlantNR,A.Factuur.Begindatum,A.Factuur.Einddatum,A.Factuur.Borg,Gegevens.voorletters,Gegevens.tussenvoegsel,Gegevens.achternaam,Gegevens.straatnaam,Gegevens.huisNR,Gegevens.Postcode,Gegevens.rekeningNR, Gegevens.Plaats,A.KMteVEEL;
代码在我添加 B.BorgA
和
(SELECT Prijzen.Borg as BorgA
FROM((Prijzen
INNER JOIN Autos ON Autos.Klasse = Prijzen.Klasse)
INNER JOIN Factuur ON Factuur.AutoNR = Autos.AutoNR))AS B
部分。
有什么办法如何让它工作?
我试过在GROUP BY中添加B.BorgA,但是did not给了我正确的结果。
由于您没有标准限制您的 A
子查询和 B
子查询之间的联接笛卡尔积。您的子查询已经加入 Prijzen
所以只需将其添加到 SELECT
和 GROUP BY
列表。还有其他清理:
SELECT
SUM(TotaalPrijs)As TotaalPrijs,
AutoNR,
AutoKlasse,
MAX(Dagen)as Dagen,
dag125KM as PrijsPerDag,
ExtraKM As PrijsPerExtraKM,
FactuurNR,
KlantNR,
Begindatum,
Einddatum,
Borg,
voorletters,
tussenvoegsel,
achternaam,
straatnaam,
huisNR,
邮政编码,
rekeningNR ,
Plaats,
KMteVEEL,
BorgA
FROM(SELECT p.Borg as BorgA,f.Dagen,f.AutoNR AS carNR,a.AutoNR,a.Klasse AS AutoKlasse ,p.Klasse,p.dag125KM,p.ExtraKM,(p.dag125KM * f.Dagen)AS MinPrijs,f.FactuurNR,f.KlantNR,f.Begindatum,f.Einddatum,f.Borg,(KMteVEEL * [Prijzen ]![ExtraKM])+([Prijzen]![dag125KM] * [Factuur]![Dagen])AS TotaalPrijs,g.voorletters,g.tussenvoegsel,g.achternaam,g.straatnaam,g.huisNR,g.Postcode ,g.rekeningNR,g.Plaats,IIf([Factuur] [EindKMStand] - [Factuur]![BeginKMStand] - ([Factuur] [Dagen] * 125) 0,[Factuur]![EindKMStand] - [Factuur]![BeginKMStand] - ([Factuur]![Dagen] * 125))AS KMteVEEL
FROM autos a
INNER JOIN Factuur f ON a.AutoNR = f.AutoNR
INNER JOIN Prijzen p ON a.Klasse = p.Klasse
INNER JOIN Gegevens g ON f.KlantNR = g.KlantNR
)AS sub
GROUP BY AutoNR,
AutoKlasse,
dag125KM,
ExtraKM,
FactuurNR,
KlantNR,
Begindatum,
Einddatum,
Borg,
voorletters,
tussenvoegsel,
achternaam,
straatnaam,
huisNR,
邮政编码,
rekeningNR,
Plaats,
KMteVEEL,
BorgA
code> JOIN 语法和已添加的别名。子查询甚至没有必要,但如果您删除了子查询,则必须适当更改别名。
I've been stuck with a problem in MS Access. I am trying to add a collumn but I got a error. "Your query does not include the specified expression 'BorgA' as part of an aggregate function."
I am using this Query:
SELECT
SUM(A.TotaalPrijs) As TotaalPrijs,
A.AutoNR,
A.AutoKlasse,
MAX(A.Factuur.Dagen) as Dagen,
A.Prijzen.dag125KM as PrijsPerDag,
A.Prijzen.ExtraKM As PrijsPerExtraKM,
A.Factuur.FactuurNR,
A.Factuur.KlantNR,
A.Factuur.Begindatum,
A.Factuur.Einddatum,
A.Factuur.Borg,
Gegevens.voorletters,
Gegevens.tussenvoegsel,
Gegevens.achternaam,
Gegevens.straatnaam,
Gegevens.huisNR,
Gegevens.Postcode,
Gegevens.rekeningNR,
Gegevens.Plaats,
A.KMteVEEL,
B.BorgA
FROM
(SELECT Factuur.Dagen, Factuur.AutoNR AS carNR, autos.AutoNR, autos.Klasse AS AutoKlasse, Prijzen.Klasse, Prijzen.dag125KM, Prijzen.ExtraKM, (prijzen.dag125KM*Factuur.Dagen) AS MinPrijs, Factuur.FactuurNR, Factuur.KlantNR, Factuur.Begindatum, Factuur.Einddatum, Factuur.Borg, (KMteVEEL*[Prijzen]![ExtraKM])+([Prijzen]![dag125KM]*[Factuur]![Dagen]) AS TotaalPrijs, Gegevens.voorletters, Gegevens.tussenvoegsel, Gegevens.achternaam, Gegevens.straatnaam, Gegevens.huisNR, Gegevens.Postcode, Gegevens.rekeningNR, Gegevens.Plaats, IIf([Factuur]![EindKMStand]-[Factuur]![BeginKMStand]-([Factuur]![Dagen]*125) < 0, 0, [Factuur]![EindKMStand]-[Factuur]![BeginKMStand]-([Factuur]![Dagen]*125)) AS KMteVEEL
FROM autos, Factuur, Prijzen, Gegevens
WHERE (((Factuur.AutoNR)=Autos.AutoNR) And ((autos.Klasse)=Prijzen.Klasse) And ((Factuur.KlantNR)=Gegevens.KlantNR))
) AS A,
(SELECT Prijzen.Borg as BorgA
FROM ((Prijzen
INNER JOIN Autos ON Autos.Klasse = Prijzen.Klasse)
INNER JOIN Factuur ON Factuur.AutoNR = Autos.AutoNR)) AS B
GROUP BY
A.AutoNR, A.AutoKlasse, A.Prijzen.dag125KM, A.Prijzen.ExtraKM, A.Factuur.FactuurNR, A.Factuur.KlantNR, A.Factuur.Begindatum, A.Factuur.Einddatum, A.Factuur.Borg, Gegevens.voorletters, Gegevens.tussenvoegsel, Gegevens.achternaam, Gegevens.straatnaam, Gegevens.huisNR, Gegevens.Postcode, Gegevens.rekeningNR, Gegevens.Plaats, A.KMteVEEL;
The code worked perfect before I added the B.BorgA
and the
(SELECT Prijzen.Borg as BorgA
FROM ((Prijzen
INNER JOIN Autos ON Autos.Klasse = Prijzen.Klasse)
INNER JOIN Factuur ON Factuur.AutoNR = Autos.AutoNR)) AS B
Part. Is there any way how to get it working? I've tried adding B.BorgA in the GROUP BY but that didnt gave me the correct result. Any other way how to get it working?
Thanks,
Since you had no criteria to limit the join between your A
subquery and B
subquery you were getting a Cartesian product. Your subquery already joins to Prijzen
so just add that into the SELECT
and GROUP BY
lists. Also other cleanup:
SELECT
SUM(TotaalPrijs) As TotaalPrijs,
AutoNR,
AutoKlasse,
MAX(Dagen) as Dagen,
dag125KM as PrijsPerDag,
ExtraKM As PrijsPerExtraKM,
FactuurNR,
KlantNR,
Begindatum,
Einddatum,
Borg,
voorletters,
tussenvoegsel,
achternaam,
straatnaam,
huisNR,
Postcode,
rekeningNR,
Plaats,
KMteVEEL,
BorgA
FROM (SELECT p.Borg as BorgA,f.Dagen, f.AutoNR AS carNR, a.AutoNR, a.Klasse AS AutoKlasse, p.Klasse, p.dag125KM, p.ExtraKM, (p.dag125KM*f.Dagen) AS MinPrijs, f.FactuurNR, f.KlantNR, f.Begindatum, f.Einddatum, f.Borg, (KMteVEEL*[Prijzen]![ExtraKM])+([Prijzen]![dag125KM]*[Factuur]![Dagen]) AS TotaalPrijs, g.voorletters, g.tussenvoegsel, g.achternaam, g.straatnaam, g.huisNR, g.Postcode, g.rekeningNR, g.Plaats, IIf([Factuur]![EindKMStand]-[Factuur]![BeginKMStand]-([Factuur]![Dagen]*125) < 0, 0, [Factuur]![EindKMStand]-[Factuur]![BeginKMStand]-([Factuur]![Dagen]*125)) AS KMteVEEL
FROM autos a
INNER JOIN Factuur f ON a.AutoNR = f.AutoNR
INNER JOIN Prijzen p ON a.Klasse = p.Klasse
INNER JOIN Gegevens g ON f.KlantNR = g.KlantNR
) AS sub
GROUP BY AutoNR,
AutoKlasse,
dag125KM,
ExtraKM,
FactuurNR,
KlantNR,
Begindatum,
Einddatum,
Borg,
voorletters,
tussenvoegsel,
achternaam,
straatnaam,
huisNR,
Postcode,
rekeningNR,
Plaats,
KMteVEEL,
BorgA
I also eliminated your outdated JOIN
syntax and added aliases. The subquery isn't even necessary, but you'd have to change aliases appropriately if you eliminated it.
这篇关于查询不包括指定的表达式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!