在我提出问题之前,我想对大家说新年快乐! 但我有一个问题。 我目前有一个学校作业,为汽车制作数据库。要计算总数,我使用此查询。
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, (((([Factuur]![EindKMStand]-[Factuur]![BeginKMStand])-([Factuur]![Dagen]*125))*[Prijzen]![ExtraKM])+([Prijzen]![dag125KM]*[Factuur]![Dagen])) AS TotaalPrijs, Gegevens.voorletters, Gegevens.tussenvoegsel, Gegevens.achternaam, Gegevens.straatnaam, Gegevens.huisNR, Gegevens.Postcode, Gegevens.rekeningNR, Gegevens.Plaats, (([Factuur]![EindKMStand]-[Factuur]![BeginKMStand])-Dagen*125) AS KMteVEEL
FROM autos, Factuur, Prijzen, Gegevens
WHERE (((Factuur.AutoNR)=Autos.AutoNR) And ((autos.Klasse)=Prijzen.Klasse) And ((Factuur.KlantNR)=Gegevens.KlantNR));
但是我得到了双排。 (Factuur.AutoNR和Autos.AutoNR,AutoKlasse和Klasse) (图片:http://gyazo.com/c51f484617d946ae70f9446f41256bec)
任何方式只获得1行信息?
祝你们玩得愉快!
答案 0 :(得分:1)
首先,为了获得更好的答案,告诉我们您使用的是什么RMDBS会很有帮助(从屏幕截图中,我猜测访问权限)。不同的数据库系统以完全不同的方式实现SQL。
其次,您希望每行在查询中表示什么?正如你所写的那样,每张Factuur(发票[道歉我的荷兰人不太好......])将获得一行,并附上该发票的总价。
听起来你想通过autoNR得到总数。要做到这一点,你需要像
这样的东西SELECT
SUM(A.TotaalPrijs) As TotaalPrijs,
A.AutoNR,
A.AutoKlasse
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, (((([Factuur]![EindKMStand]-[Factuur]![BeginKMStand])-([Factuur]![Dagen]*125))*[Prijzen]![ExtraKM])+([Prijzen]![dag125KM]*[Factuur]![Dagen])) AS TotaalPrijs, Gegevens.voorletters, Gegevens.tussenvoegsel, Gegevens.achternaam, Gegevens.straatnaam, Gegevens.huisNR, Gegevens.Postcode, Gegevens.rekeningNR, Gegevens.Plaats, (([Factuur]![EindKMStand]-[Factuur]![BeginKMStand])-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
GROUP BY
A.AutoNR, A.AutoKlasse
当您使用group by时,您可以选择要聚合的字段(AutoNR和AutoKlasse)以及要聚合的字段(TotaalPrijs)和要用于聚合的函数(在您的情况下为SUM,但它可以是MIN或MAX)然后查询将为AutoNR和AutoKlasse的每个唯一组合获得TotaalPrijs的SUM。