okovalev
@okovalev

Mysql. Как выбрать тех, у кого 0 смен, если у всех уже по одной, то выбрать у кого 1, но если меньше 500 зарплата то не выбирать?

Есть таблица.
5c4b35173073a706152287.jpeg

В целом для нужной мне выборки нужно 4 запроса:
SELECT * FROM `table` WHERE `smen` <= 0 AND `cash` > 500 ORDER BY `cash` DESC LIMIT 1;
SELECT * FROM `table` WHERE `smen` <= 1 AND `cash` > 500 ORDER BY `cash` DESC LIMIT 1;
SELECT * FROM `table` WHERE `smen` <= 0 ORDER BY `cash` DESC LIMIT 1;
SELECT * FROM `table` WHERE `smen` <= 1 ORDER BY `cash` DESC LIMIT 1;

т.е. это такой аналог приоритета выборки.
Если 1 запрос вернул 0 строк, то выполняем 2.
итд
Можно ли объединить это в 1 запрос?
Или лучше брать выборку и уже в php приложении проходить через Ifelse к примеру или switch?
  • Вопрос задан
  • 108 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT * FROM (
  (SELECT *, 0 as `order`
     FROM `table` 
     WHERE `smen` <= 0 AND `cash` > 500 
     ORDER BY `cash` DESC 
     LIMIT 1)
  UNION
  (SELECT *, 1
     FROM `table` 
     WHERE `smen` <= 1 AND `cash` > 500 
     ORDER BY `cash` DESC 
     LIMIT 1)
  UNION
  (SELECT *, 2
     FROM `table` 
     WHERE `smen` <= 0 
     ORDER BY `cash` DESC 
     LIMIT 1)
  UNION
  (SELECT *, 3
     FROM `table` 
     WHERE `smen` <= 1 
     ORDER BY `cash` DESC 
     LIMIT 1)
  )
  ORDER BY `order`
  LIMIT 1
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы