Получить результат на основе последнего установленного статуса в объединенной таблице - PullRequest
0 голосов
/ 03 февраля 2019

Доброе утро!

У меня есть следующие настройки базы данных:

  • таблица заказов: содержит все заказы, включая соответствующий магазин
  • таблица shops_status: содержит всестатус для магазина
  • таблица orders_status: содержит идентификатор_порта, идентификатор_идентификатора соответствующего магазина и статус, а также дату, когда статус был установлен

здесь приведены операторы db (без индексови так далее, есть еще много столбцов, но я отмечу только необходимые, запросы не будут выполняться):

CREATE TABLE IF NOT EXISTS d02bc910.orders (
  id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  shops_id INT(10) UNSIGNED NOT NULL,
  created_at TIMESTAMP NULL DEFAULT NULL,
  updated_at TIMESTAMP NULL DEFAULT NULL,
  PRIMARY KEY (id);

CREATE TABLE IF NOT EXISTS d02bc910.shops_status (
  shops_status_id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  shops_id INT(10) UNSIGNED NOT NULL,
  translations_id INT(10) UNSIGNED NOT NULL,   <= the software's multilingual so I use translations here
  status_order TINYINT(3) NOT NULL,
  PRIMARY KEY (shops_status_id);

CREATE TABLE IF NOT EXISTS d02bc910.orders_status (
  order_id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  status_id INT(10) UNSIGNED NOT NULL,
  users_id INT(10) UNSIGNED NOT NULL,
  updatedAt DATETIME NOT NULL;

Теперь я хочу создать отчет, содержащийвсе заказы, соответствующие различным параметрам поиска, включая последний статус для соответствующего заказа.Но я не знаю, как объединить JOIN к orders_status с последним установленным status_id.Впоследствии я мог бы сделать это в PHP-foreach, но тогда мне сначала нужно было бы собрать все идентификаторы, выполнить оператор, а затем сопоставить результаты, но я думаю, что есть способ сделать это в SQL.

Кто-нибудь может мне помочь с этим, пожалуйста?

Заранее спасибо, S

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...