php - Codeigniter - 使用 MySql 按 MaxDate/time 从具有多个重复项的元表中获取数据

标签 php mysql codeigniter

我正在尝试从三个表中获取数据。

表名称

  1. table 水疗中心
  2. 表格spa_meta
  3. 库存(库存仅返回一列unit_no 使用简单的连接这不是问题)

表的数据结构如下

table 水疗中心 enter image description here

Spa_meta

enter image description here

  • 我想列出基本信息应来自的数据 第一个表 Spa (id,title, inventory_id)
  • 但从另一个 表spa_meta仅应选择与spa_id匹配的一个条目 应该根据created_at列(时间)进行DESC

问题:如何使用最少的 SQL 查询来实现此目的。正如我正在尝试的那样,这显然是错误的

 select *, inventory_id, max(created_at) as MaxDate, inventory.unit_no as unit
from spa_meta t
inner join (
    select spa.id as id, spa.title, spa.inventory_id as inventory_id, 
    from spa

     group by spa.id 
) tm on t.spa_id = tm.id 

left join inventory  on tm.inventory_id = inventory.id
group by unit
 order by MaxDate DESC

最佳答案

SELECT spa_1.id as id, spa_1.title, spa_1.inventory_id, inventory.unit_no as unit, 
spa_meta.*
FROM spa_meta
JOIN (
   SELECT spa.*, (SELECT MAX(created_at) FROM spa_meta WHERE spa_meta.spa_id = 
   spa.id) as max_date FROM spa 
) AS spa_1 ON spa_1.max_date = spa_meta.created_at AND spa_1.id = spa_meta.spa_id
LEFT JOIN inventory ON spa_1.inventory_id = inventory.id        

关于php - Codeigniter - 使用 MySql 按 MaxDate/time 从具有多个重复项的元表中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55780598/

相关文章:

php - 在 zf2 左连接中应用多个条件

php - Codeigniter 2.x SSL 重定向循环

php - CodeIgniter Active Record - 防止重复,按日期排序

php - 将列添加到表会返回错误,指出 SQL 语法错误

php - 使用 PHP 在 MySQL 数据库中存储多个复选框数据

mysql - 按条件排序到字段

mysql - sql子查询中如何使用Union

php - 插入行时,Codeigniter affected_rows 总是返回 0

php - 在哪里可以找到触发 unset() 垃圾回收的 "low memory"和 "free CPU cycles"调用?

php - CodeIgniter 嵌套 where 条件