我有一张桌子预订,包含酒店,客户,价格等
现在我想通过计算我的定价为每家酒店赚一笔钱。
我已经有一个查询工作,计算每条记录的价格,但现在我想看到它每个酒店加起来。
这就是我所拥有的:
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安特卫普和Consequat一次,并且每个酒店加上所有这些总和,它总是单独给它。
我该如何解决这个问题? 我尝试了一个Group BY a.hotelid,它给了我2家酒店,但只有它没有加起来的第一张记录的总和。
提前感谢!
答案 0 :(得分: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
答案 1 :(得分: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
就是这样。
答案 2 :(得分:0)
您需要添加GROUP BY
子句。 SELECT
.... GROUP BY hotelid
。