Codeigniter - выборка данных из мета-таблицы с несколькими дубликатами по MaxDate / time с использованием MySql - PullRequest
0 голосов
/ 21 апреля 2019

Я пытаюсь получить данные из трех таблиц.

Имена таблиц

  1. стол спа
  2. стол spa_meta
  3. таблица инвентарь (инвентарь возвращает только один столбец unit_no используя простое соединение, которое не является проблемой)

Структура данных для таблиц выглядит следующим образом

стол спа enter image description here

стол Spa_meta

enter image description here

  • Я хочу перечислить данные, откуда должна исходить основная информация Первый стол Спа (идентификатор, заголовок, инвентарный_ид)
  • но с другой таблица spa_meta только ONE должна быть выбрана запись, соответствующая spa_id который должен быть DESC в соответствии с колонкой create_at (время)

Вопрос : Как добиться этого, используя минимальный 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 Ответ

1 голос
/ 21 апреля 2019
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        
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...