表中的双行

时间:2015-01-01 19:07:57

标签: sql database rdbms

在我提出问题之前,我想对大家说新年快乐! 但我有一个问题。 我目前有一个学校作业,为汽车制作数据库。要计算总数,我使用此查询。

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行信息?

祝你们玩得愉快!

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。