Я хочу сделать хранимую процедуру, но я не знаю, какой должен быть правильный подход или если это возможно сделать в MySQL.Должен ли я использовать процедуру MySQL для этого запроса?
Позвольте представить вам свою проблему. Скажем, у меня есть таблица, которая имеет столбцы, как это:
TABLE A
id | Hotel | city_name | region_name | country
1 | A | Amsterdam | North-Holland | Netherlands
2 | B | Amsterdam | North-Holland | Netherlands
3 | C | Leiden | North-Holland | Netherlands
4 | D | Katwijk | North-Holland | Netherlands
5 | E | Leiden | North-Holland | Netherlands
6 | F | Katwijk | North-Holland | Netherlands
Я хотел бы получить только 3 результаты каждый раз, когда я выполнить этот запрос, и результаты должны быть созданы в следующем порядке:
- Если это 3 или более городов (пользователь выбирает в этом случае мы можем взять Амстердам), который
city_name=Amsterdam
, а затем возвратите случайные 3 города в Амстердаме - Если в Амстердаме осталось менее 3 записей, возвращайте любую запись, в которой есть Амстердам + возвратные случайные записи, где
region=North-Holland
, но общая сумма записей, которые повторно Оказалось всегда должно быть 3 (пример: у нас есть 2 записей, гдеcity= Amsterdam
+ мы берем одну случайную запись изregion=North Holand;
example2: мы имеем одну запись, гдеcity=Amsterdam
+ мы берем 2 случайные записи, гдеregion="north Holland"
)
Возможно ли это с помощью SQL или я должен получить все записи в php, а затем перебирать каждую из записей?
Мне, вероятно, нужно пройти 2 аргумента в процедуре (city_name, region).
До сих пор я пробовал некоторые базовые SQL-запросы, и я не мог заставить его работать.
А, это тоже сработает, но вам нужно будет исключить город_имя «Амстердам» во втором SELECT, или вы можете получить одну и ту же запись из первого SELECT – starshine531
WHERE region = 'North Holand' AND city_name < > 'Amsterdam' – Jocelyn
@Jocelyn спасибо всем! –