TSQL Query Help Pt. III (последний) - PullRequest
       2

TSQL Query Help Pt. III (последний)

0 голосов
/ 10 апреля 2011

У меня есть 2 запроса, которые я получил от справки с этого сайта, и они:

SELECT gr.g_name, (DATEDIFF(d, r.res_checkout_date, r.res_checkin_date) * pp.rate ) + ISNULL(i.inv_amount, 0)
FROM guest_reservation gr LEFT OUTER JOIN invoice i ON gr.confirm_no = i.confirm_no
JOIN reservation r ON gr.confirm_no = r.confirm_no
JOIN price_plan pp ON r.price_plan = pp.price_plan;

SELECT g.g_name, DATEDIFF(d, r.res_checkin_date, r.res_checkout_date)*p.rate+coalesce(i.inv_amount, 0) as Amount
FROM reservation as r  INNER JOIN priceplan as p
ON r.price_plan = p.price_plan
INNER JOIN guest_reservation as g
ON r.confirm_no = g.confirm_no
LEFT OUTER JOIN invoice as i
ON r.confirm_no = i.confirm_no;

Все таблицы имеют следующие данные, связанные с ними:

Таблица guest reservationимеет следующие столбцы с данными:

(confirm_no, agent_id, g_name, g_phone)

В таблице reservation есть следующие столбцы с данными:

(confirm_no, credit_card_no, res_checkin_date, res_checkout_date, 
 default_villa_type, price_plan)

Мне нужно как-то добавить элементы, которые гость заказал уdining_order таблица (которая связана с r_confirm_no из таблицы dining_order, равной confirm_no из таблицы reservation), цена предметов должна быть взята из таблицы dining_menu (где dining_order.item равнаdining_menu.item) и добавлен в вышеупомянутый запрос.

Связанные таблицы с новой информацией, которую мне нужно добавить:

В таблице invoice есть следующие столбцы с данными:

(inv_no, inv_date, inv_amount, confirm_no).

Таблица price plan содержит следующие столбцы с данными:

(price_plan, rate, default_villa_type, bed_type)

1 Ответ

1 голос
/ 10 апреля 2011

Это не проверено, но вы можете использовать подзапрос для суммирования обеденных предметов для каждого гостя и добавления его к общему количеству.Это также внешнее соединение, так как гость, возможно, не использовал столовые принадлежности.

SELECT gr.g_name, (DATEDIFF(d, r.res_checkout_date, r.res_checkin_date) * pp.rate ) + ISNULL(i.inv_amount, 0) + ISNULL(d.total_dining, 0)
FROM guest_reservation gr 
LEFT OUTER JOIN invoice i ON gr.confirm_no = i.confirm_no
JOIN reservation r ON gr.confirm_no = r.confirm_no
JOIN price_plan pp ON r.price_plan = pp.price_plan
LEFT OUTER JOIN (SELECT r_confirmation_no, SUM(price) AS total_dining
                 FROM dining_order do JOIN dining_menu dm ON do.item = dm.item 
                 GROUP BY r_confirmation_no) AS d ON d.r_confirmation_no = r.confirm_no
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...