-1

こんにちは、私は新参者で、ホテルの予約についてサポートが必要です。次の表があります。

id, idhotel, room, data_start, data_end, price 

今、同じ人が何日もの間部屋を検索したときに合計価格を計算する必要があります。このクエリを試していますが、結果は 0 です。

$query = "SELECT room, SUM(price) FROM price WHERE idhotel='".$_GET['id']."' BETWEEN 'data_start' AND 'data_end'  
ORDER BY room";

誰かが私を助けることができますか?

4

2 に答える 2

0

私が正しく理解していれば、おそらくこのようなものを探しているでしょう

$date_start = $_GET['date_start'];
$date_end = $_GET['date_end'];
$hotel_id = $_GET['id'];

$query = "SELECT room, 
                 SUM(price) total
            FROM tablename
           WHERE data_start >= '$date_start' 
             AND date_end <= '$date_end'
             AND idhotel = $hotel_id
           GROUP BY room";
于 2013-05-08T04:13:18.017 に答える
0

次のようなものが必要だと思います:

SELECT idhotel, room, price, (DATEDIFF(data_end, data_start) * price) as total FROM rooms

テストのために、次のテーブルを作成して入力しますselect * :

create table rooms (id int not null primary key auto_increment, idhotel int, room int, data_start date, data_end date, price int);

+----+---------+------+------------+------------+-------+
| id | idhotel | room | data_start | data_end   | price |
+----+---------+------+------------+------------+-------+
|  1 |       1 |    1 | 2013-05-09 | 2013-05-12 |   100 |
|  2 |       1 |    1 | 2013-05-20 | 2013-05-20 |   100 |
+----+---------+------+------------+------------+-------+

次のクエリを使用して合計費用を取得します (1 日を失うのを防ぐために変更されています)。

SELECT idhotel, room, price, ((DATEDIFF(data_end, data_start) + 1) * price) as total FROM rooms;

結果:

+---------+------+-------+-------+
| idhotel | room | price | total |
+---------+------+-------+-------+
|       1 |    1 |   100 |   400 |
|       1 |    1 |   100 |   100 |
+---------+------+-------+-------+

拡張する

期間の部屋の合計額を取得したい場合は、次のコードを使用してみてください。

SELECT 
    idhotel, room, SUM(total) as total_sum 
FROM 
(
    SELECT 
        idhotel, 
        room,
        price, 
        (DATEDIFF(data_end, data_start) * price) as total 
    FROM 
        rooms
) as t 
GROUP BY 
    idhotel, room;

結果:

+---------+------+-----------+
| idhotel | room | total_sum |
+---------+------+-----------+
|       1 |    1 |       150 |
+---------+------+-----------+
于 2013-05-08T04:00:18.213 に答える