根据联接表中设置的最新状态获取结果

时间:2019-02-03 08:42:44

标签: mysql datetime join

早上好!

我具有以下数据库设置:

  • 表格订单:包含所有订单,包括各自的商店
  • 表shops_status:包含每个商店的所有状态
  • 表orders_status:包含order_id,相应商店和状态的status_id以及状态的设置日期

这是db语句(没有indize等等,还有更多的列,但我只注意必要的列,查询将无法执行):

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中完成此操作,但随后要么要么必须先收集所有id,然后运行一条语句,然后再匹配结果,但我想在SQL中有一种方法可以做到这一点。

有人可以帮我吗?

谢谢,S

0 个答案:

没有答案