Получение строк по условию - 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;

Объяснение кода листинга программы

  1. Создаётся подзапрос, в котором выполняется операция UNION ALL для объединения результатов трёх одинаковых запросов SELECT, которые выбирают данные из таблицы metro по условию metro1 = 'Нарвская'.
  2. В каждом из этих запросов выбирается поле id и его значение присваивается переменной id, а также поле price1 и его значение присваивается переменной price.
  3. Результат подзапроса сохраняется в таблице tbl.
  4. Выполняется запрос SELECT, который выбирает из таблицы tbl поле id и сортирует результаты по убыванию значения поля price.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.333 из 5