table 中的双行
Double rows in table
在我提问之前我想跟大家说一声新年快乐!
但我有一个问题。
我目前有一项学校作业是为汽车建立数据库。为了计算总数,我使用了这个查询。
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 行信息?
祝大家有个愉快的一天!
首先,为了获得更好的答案,告诉我们您使用的是什么 RMDBS 会很有帮助(从屏幕截图来看,我猜是 Access)。不同的数据库系统实现 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
当您使用分组依据时,您选择要聚合的字段(AutoNR 和 AutoKlasse)和要聚合的字段 (TotaalPrijs) 以及要用于聚合的函数(在您的情况下为 SUM,但它可能是 MIN 或 MAX),然后查询将为 AutoNR 和 AutoKlasse 的每个唯一组合获取 TotaalPrijs 的总和。
在我提问之前我想跟大家说一声新年快乐! 但我有一个问题。 我目前有一项学校作业是为汽车建立数据库。为了计算总数,我使用了这个查询。
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 行信息?
祝大家有个愉快的一天!
首先,为了获得更好的答案,告诉我们您使用的是什么 RMDBS 会很有帮助(从屏幕截图来看,我猜是 Access)。不同的数据库系统实现 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
当您使用分组依据时,您选择要聚合的字段(AutoNR 和 AutoKlasse)和要聚合的字段 (TotaalPrijs) 以及要用于聚合的函数(在您的情况下为 SUM,但它可能是 MIN 或 MAX),然后查询将为 AutoNR 和 AutoKlasse 的每个唯一组合获取 TotaalPrijs 的总和。