@Us59

Как задать условие в Mysql запросе?

На данный момент у меня 2 запроса в БД:
$this->DB->query("SELECT Id FROM sc_orders WHERE StatusId = '5'"); // получает заказы с статусом 5
и
$this->DB->query("SELECT Id, No, Package, UserId FROM codes WHERE (PackageId = '" . $this->SERVICE_A . "' OR PackageId = '" . $this->SERVICE_B . "') AND StatusId = '1'");


Суть задачи: Выбрать записи со статусом 5, и если такие есть подсчитать количество.
Смысл в том, что мне нужно задавать лимит, у нас есть переменная $limited = 20;
если записей со статусом 5 не найдено, то сделать выборку из таблицы codes и взять от туда 20 записей.
Например:
выбор из sc_orders выдал 5 записей, мы должны получить только 15 записей, поскольку лимит = 20 шт.

Вопрос в том, можно ли это сделать через 1 SELECT запрос как-то? Сейчас это работает через php проверки, но приходится делать 2 запроса к БД.
  • Вопрос задан
  • 67 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT ...
  FROM (
    SELECT 0 AS `order`, ...
      FROM `sc_order` 
      WHERE `StatusId` = 5
    UNION SELECT 1 AS `order`, ...
      FROM `codes` 
      WHERE ...
  ) AS `t`
  ORDER BY `order`
  LIMIT 20
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы