Получение строк по условию - MySQL
Формулировка задачи:
Добрый день!
Помогите написать запрос.
Есть база
id,metro1,metro2,metro3,price1,price2,price3
1,Нарвская,Балтийкая,Автово,10,10,10
2,Адмиралтейская,Нарвская,Автово,11,11,11
3,Адмиралтейская,Ветеранов,Автово,11,11,11
4,Нарвская,Адмиралтейская,Автово,9,9,9
Мне нужно получить все строки где metro1 или metro2 или metro3 равно "Нарвская" и отсортированный по price1 или price2 или price3
Тоесть если Нарвская находится в metro1 то брать поле price1
Результат должен быть:
2,1,4
Решение задачи: «Получение строк по условию»
textual
Листинг программы
select id from ( select id, price1 as price from metro as t1 where metro1 = 'Нарвская' union select id, price2 as price from metro as t2 where metro2 = 'Нарвская' union select id, price3 as price from metro as t3 where metro3 = 'Нарвская' ) as tbl order by price desc;
Объяснение кода листинга программы
- Создаётся подзапрос, в котором выполняется операция UNION ALL для объединения результатов трёх одинаковых запросов SELECT, которые выбирают данные из таблицы metro по условию metro1 = 'Нарвская'.
- В каждом из этих запросов выбирается поле id и его значение присваивается переменной id, а также поле price1 и его значение присваивается переменной price.
- Результат подзапроса сохраняется в таблице tbl.
- Выполняется запрос SELECT, который выбирает из таблицы tbl поле id и сортирует результаты по убыванию значения поля price.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д