簡體   English   中英

mysql查詢酒店空房情況(不計算總價)

[英]mysql query hotel availability (Not calculate the total price)

搜索住宿清單和總價。

這是我的查詢和輸出: http : //sqlfiddle.com/#!2/eaf58/43

查詢:

SELECT count(candidates.accommodation_id) as total, candidates.accommodation_id, omc_accommodation_season_period.season_id,
       room_1, r1_price.price_normal AS room_1_price,
       (SELECT SUM(room1_price.price_normal)
        FROM omc_accommodation_room_pricelist room1_price
        INNER JOIN omc_accommodation_room room1 
        ON room1_price.accommodation_id = room1.accommodation_id
        INNER JOIN omc_accommodation_season_period so1 
        ON room1_price.accommodation_id = so1.accommodation_id 
           AND room1_price.season_id = so1.season_id
        INNER JOIN omc_accommodation accommodation1 
        ON room1_price.accommodation_id = accommodation1.id
        WHERE
           so1.date BETWEEN '2013-08-13' AND '2013-08-15' AND
           room1.quantity >= 3 AND room1.pax_max = 1 AND
           accommodation1.id = candidates.accommodation_id AND
           room1.id = room_1) AS room_1_sum,
       room_2,r2_price.price_normal AS room_2_price,
       omc_accommodation_season_period.date
FROM (SELECT r1.accommodation_id, r1.id AS room_1,
             r2.id AS room_2, r1.quantity AS room_1_quantity,
             r2.quantity AS room_2_quantity
      FROM
         omc_accommodation_room r1
      INNER JOIN
         omc_accommodation_room r2 ON r1.accommodation_id = r2.accommodation_id
      WHERE
          r1.quantity >= 3 AND r2.quantity >= 4 AND r1.pax_max = 1 AND r2.pax_max = 2) AS candidates
LEFT JOIN omc_accommodation_season_period
          ON candidates.accommodation_id = omc_accommodation_season_period.accommodation_id
             AND date BETWEEN '2013-08-13' AND '2013-08-15'
             AND omc_accommodation_season_period.date <> 0
LEFT JOIN omc_accommodation_room_extra_quota eq1
          ON (candidates.accommodation_id = eq1.accommodation_id
              AND room_1 = eq1.room_type_id
              AND eq1.date=omc_accommodation_season_period.date)
LEFT JOIN omc_accommodation_room_extra_quota eq2
          ON (candidates.accommodation_id = eq2.accommodation_id
              AND room_2 = eq2.room_type_id
              AND eq2.date=omc_accommodation_season_period.date)
LEFT JOIN omc_accommodation
          ON candidates.accommodation_id = omc_accommodation.id
LEFT JOIN omc_accommodation_room_pricelist r1_price
          ON (candidates.accommodation_id = r1_price.accommodation_id
              AND room_1= r1_price.room_type_id)
LEFT JOIN omc_accommodation_room_pricelist r2_price
          ON (candidates.accommodation_id = r2_price.accommodation_id
              AND room_1 = r2_price.room_type_id)
WHERE
    r1_price.season_id =  omc_accommodation_season_period.season_id
    AND
    r2_price.season_id =  omc_accommodation_season_period.season_id
GROUP BY candidates.accommodation_id, omc_accommodation_season_period.date

問題只是計算每個房間的總價。

幫我修復一下

提前謝謝了

SELECT rsp1.date, rsp1.season_id, r1.hotel_id, r1.id AS room_1, rp1.price_normal AS room_1_price, SUM(rp1.price_normal) AS room_1_total, r2.id AS room_2, rp2.price_normal AS room_2_price
FROM
omc_hotel_room r1
LEFT JOIN omc_hotel_room r2 ON r1.hotel_id = r2.hotel_id
INNER JOIN omc_hotel_room_pricelist rp1 ON r1.hotel_id = rp1.hotel_id AND r1.id = rp1.room_type_id
INNER JOIN omc_hotel_room_pricelist rp2 ON r1.hotel_id = rp1.hotel_id AND r2.id = rp2.room_type_id
LEFT JOIN omc_hotel_season_period rsp1 ON r1.hotel_id = rsp1.hotel_id
WHERE
    r1.pax_max = 1 AND 
    rp1.price_normal <> 0 AND
    r2.pax_max = 2 AND 
    rp2.price_normal <> 0 AND
    rsp1.date BETWEEN '2013/08/13' AND '2013/08/15'
GROUP BY r1.hotel_id, rsp1.date

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM