0

我有一个包含酒店、客户、定价等的餐桌预订

现在我想通过计算我的定价来计算每家酒店的总和。

我已经有一个查询可以计算每条记录的价格,但现在我想查看每家酒店的价格。

这就是我所拥有的:

select c.naam,((d.prijs+e.prijs+f.prijs)*(a.eind_datum - a.start_datum) )as sum 
from hotel c, kamer b, reservatie a, verblijfsformule d, verblijfsperiode e, kamertype f 
where a.kamerid = b.kamerid and b.hotelid = c.hotelid and a.verblijfsformuleid =   d.verblijfsformuleid and a.verblijfsperiodeid = e.verblijfsperiodeid and b.kamertypeid =   f.kamertypeid 

如果我运行这个查询,它会给我这个结果:

Name -           sum
Hilton antwerp - 2100
Hilton antwerp - 2250
Consequat      - 2000
consequat      - 1200
Hilton antwerp - 3000

因此,正如您所看到的,它给出了正确的总和,而不是只给 hilton antwerp 和 Consequat 1 次,并将所有这些总和每家酒店相加,它总是单独给出。

我该如何解决这个问题?我尝试使用 Group BY a.hotelid,它给了我 2 家酒店,但只有第一条记录的总和,然后它没有加起来。

提前致谢 !

4

3 回答 3

1
SELECT c.naam
    ,SUM((d.prijs+e.prijs+f.prijs)*(a.eind_datum - a.start_datum)) AS PriceSum
FROM hotel c
    INNER JOIN kamer b
        ON b.hotelid = c.hotelid
    INNER JOIN reservatie a
        ON a.kamerid = b.kamerid
    INNER JOIN verblijfsformule d
        ON a.verblijfsformuleid = d.verblijfsformuleid
    INNER JOIN verblijfsperiode e
        ON a.verblijfsperiodeid = e.verblijfsperiodeid
    INNER JOIN kamertype f
        ON b.kamertypeid = f.kamertypeid 
GROUP BY c.naam
于 2012-07-07T16:01:07.380 回答
0

您需要使用该group by子句。

像这样:

select c.naam,((d.prijs+e.prijs+f.prijs)*(a.eind_datum - a.start_datum) )as sum 
  from hotel c, kamer b, reservatie a, verblijfsformule d, 
       verblijfsperiode e, kamertype f 
 where a.kamerid = b.kamerid
   and b.hotelid = c.hotelid 
   and a.verblijfsformuleid =   d.verblijfsformuleid 
   and a.verblijfsperiodeid = e.verblijfsperiodeid 
   and b.kamertypeid =   f.kamertypeid
 group by c.naam

而已。

于 2012-07-07T15:54:45.560 回答
0

您需要添加一个GROUP BY子句。 SELECT...... GROUP BY hotelid_

于 2012-07-07T15:56:34.147 回答