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

ご覧のとおり、適切な合計が得られますが、ヒルトンアントワープとコンセクアットを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 に答える