Получить строки, для которых дочерние строки были недавно обновлены

У меня есть две таблицы, businesses и items. Я пытаюсь получить последние 9 предприятий с самыми последними обновлениями товаров на основе столбца updated_at в таблице items.

Я считаю, что это дает мне последние 9 бизнес-идентификаторов, которые мне нужны:

SELECT distinct business_id
FROM items
ORDER BY items.updated_at desc limit 9

Итак, я сделал это как соединение и добавил еще один столбец в выделение, он возвращает разные результаты.

SELECT b.*, i.updated_at as last_updated, i.business_id as business_id
FROM businesses AS b
INNER JOIN 
    (SELECT business_id, updated_at
      FROM items
      ORDER BY updated_at DESC 
      LIMIT 9) AS i
ON b.id = i.business_id

Мне определенно нужен столбец updated_at из таблицы items, поэтому я знаю фактическую дату. Но как только я добавляю его в оператор select с отличным, он возвращает совершенно разные результаты, поскольку я предполагаю, что строка больше не отличается, поскольку id + updated_at делает каждую строку уникальной.

Добавление схемы SQL по запросу: http://sqlfiddle.com/#!9/b44295

Если мы сделаем limit 3 в запросе к этим данным выше, он должен вернуть:

---------------------------------------
| business_name | updated_at          |
---------------------------------------
| Business Two  | 2018-01-22 23:38:05 |
---------------------------------------
| Business One  | 2018-01-02 23:38:05 |
---------------------------------------
| Business Five | 2018-01-01 23:39:51 |
---------------------------------------

«Итак, я сделал это как соединение и добавил еще один столбец к выделению, он возвращает другие результаты». "ВЫБЕРИТЕ отдельный бизнес-идентификатор" против логического "ВЫБРАТЬ бизнес-идентификатор, обновленный_ из элементов" возвращает разные результаты.

Raymond Nijland 02.05.2018 16:26

Предоставьте пример данных на sqlfiddle.com и предоставьте ожидаемый запрос на основе этих данных примера ... Трудно реконструировать запрос, не зная структуры и данных таблицы, чтобы получить рабочее решение ..

Raymond Nijland 02.05.2018 16:28

По запросу добавлены данные схемы SQLfiddle.

zen 02.05.2018 17:36
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
3
25
0

Другие вопросы по теме