0

私は2つのテーブルを持っています

  1. 予約

    id roomId checkinDate checkoutDate customerId

  2. 部屋

    roomId 料金

1日あたりの合計金額を集計したいのですが、checkinDateとcheckoutDateの間のギャップの合計金額を見つけて表示する方法がわかりません(checkinDateとcheckoutDateはユーザーからの入力である必要があります、例:checkinDate = '2013-04- 01'、checkoutDate = '2013-07-01')。自分でやってみましたが、checkinDateからしかできませんでした。これは私がしたことです:

SELECT DATE(checkinDate), SUM(price) 
FROM booking a INNER JOIN room b on a.roomID = b.roomNo 
WHERE MONTH(checkinDate) = @month and YEAR(checkinDate) = @year
GROUP BY MONTH(checkinDate), DATE(checkinDate) 

だから私はこのような結果を得ました

DATE(checkinDate)    SUM(price)
2013-06-01           3570
2013-06-04           650

しかし、私が欲しいのは次のようなものでなければなりません

DATE(checkinDate)    SUM(price)
2013-06-01           3570
2013-06-02           xxxx
2013-06-03           xxxx
2013-06-04           650

収入がない日があっても、0 と表示されるはずです。

4

2 に答える 2

0

あなたが提供したデータで、これは私にとって完璧に機能しています。あなたにも同じことを願っています:

SELECT a.checkinDate, SUM(b.price) 
FROM booking AS a LEFT JOIN room AS b on a.roomID = b.roomNo 
WHERE a.checkinDate >= '01-04-2012' AND a.checkoutDate <= '01-07-2012'
GROUP BY a.checkinDate;

予約テーブルから日付ごとにレポートが必要なので、左結合は必須です。日付のフォーマットに注意してください。結果が得られるはずです。

PS: SQLite 3.3.6 からのクエリ

于 2013-06-09T16:12:37.840 に答える