2015-08-06 3 views
0

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


Скажите, что это таблица базы данных. Существует несколько контрактов от одного отеля.

enter image description here

Я хотел получить все сырьевые материалы, которые удовлетворяют входное количество комнат для max_adults 1 (количество 1) комнат, количество комнат для номеров max_adults 2 (количество 2) номера и количество комнат для номеров max_adults 3 (вместимость 3).

например:

Input : 
2 rooms of max_adults=1(capacity 1)
1 rooms of max_adults=2(capacity 2)
3 rooms of max_adults=3(capacity 3)
Строки, которые удовлетворяют всем 3 условиям с same hotel id, должны быть выведены.

Как здесь выход должен содержать все баран hotel 1 and hotel 2

Поскольку они являются два отдельными результатами, дополнительный столбец необходим, чтобы показать сгенерированный result_id (вид серийного номера, как и в here который должен Повторяющийся acording к этой проблеме).

Я думаю много способов сделать это, но ничего не работает. Будет ли это возможным в одном запросе?

ответ

1

Используйте автообъединение:

SELECT r1.HOTEL_ID, r1.MAX_ADULTS, r1.NO_OF_ROOMS, 
    r2.MAX_ADULTS, r2.NO_OF_ROOMS, 
    r3.MAX_ADULTS, r3.NO_OF_ROOMS, 
FROM rooms AS r1 
INNER JOIN rooms AS r2 ON r1.HOTEL_ID=r2.HOTEL_ID 
INNER JOIN rooms AS r3 ON r1.HOTEL_ID=r3.HOTEL_ID 
WHERE r1.MAX_ADULTS=1 
AND r2.MAX_ADULTS=2 
AND r3.MAX_ADULTS=3 

Вы должны добавить пункты для проверки ввода количества комнат условий.

сгенерированный result_id будет r1.HOTEL_ID.

Вы должны получить один ряд за отель.

+0

Ваш ответ будет спасти мой день. Благодарю. Это своего рода ответ, который я ожидал. Может быть несколько результатов поиска для одного отеля. Таким образом, идентификатор отеля не может использоваться как сгенерированный идентификатор. Как это можно сделать, используя тот же запрос, улучшив его. – PrazSam

+0

О, я думаю, поскольку одно сырое - это единственный результат, если я могу сгенерировать нормальный серийный идентификатор, это будет мой result_id! – PrazSam

Смежные вопросы