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

时间:2019-04-21 06:54:56

标签: php mysql codeigniter

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

表名

  1. spa
  2. spa_meta
  3. 库存(库存仅返回一列unit_no 使用简单的连接,这不是问题)

表的数据结构如下

spa enter image description here

Spa_meta

enter image description here

  • 我想列出基本信息应来自的数据 第一张表 Spa (编号,标题,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

1 个答案:

答案 0 :(得分:1)

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