Как я могу получить все строки из одной таблицы, но отфильтровать вторую таблицу? - PullRequest
0 голосов
/ 04 февраля 2019

Я выполняю запрос на странице PHP, который извлекает все записи из одной таблицы, INNER JOIN с двумя другими таблицами, а затем перечисляет все результаты.Однако для второй таблицы мне нужна только самая последняя запись.

Вот мой запрос

SELECT * FROM wn_trailer 
INNER JOIN (
    SELECT id, trailer_id, trailer_status, trailer_assigned, MAX(last_update), trailer_lat, trailer_long
    FROM wn_trailer_history
) AS th ON wn_trailer.id = th.trailer_id 
INNER JOIN wn_trailer_status ON wn_trailer_status.id = th.trailer_status 
INNER JOIN wn_users ON wn_users.id = th.trailer_assigned 
ORDER BY trailer_number ASC

Запрос выполняется, но возвращает только первую запись.

1 Ответ

0 голосов
/ 05 февраля 2019

Требуется дополнительный JOIN для ввода данных о дате последнего обновления.Кроме того, вашему подзапросу требуется GROUP BY:

SELECT *
FROM wn_trailer t INNER JOIN
     (SELECT trailer_id, MAX(last_update) as max_last_update
      FROM wn_trailer_history
      GROUP BY trailer_id
     ) tht
     ON t.id = tht.trailer_id INNER JOIN
     wn_trailer_history th
     ON th.trailer_id = tht.trailer_id AND
        th.last_update = tht.max_last_update INNER JOIN
     wn_trailer_status ts
     ON ts.id = th.trailer_status INNER JOIN
     wn_users u
     ON u.id = th.trailer_assigned 
ORDER BY trailer_number ASC;

Я также добавил псевдонимы таблиц, чтобы запрос был легче писать и читать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...