2017-02-20 11 views
-1

Задача простыми словами: 1-й должен быть присоединен ко второй таблице, где последняя запись. Итак, я использую подход использования функции MAX()Получить строку с максимальным номером

В настоящее время у меня есть 2 стола.

соответствует

enter image description here

matches_payments

enter image description here |

Теперь я хочу присоединиться второй таблицей на первый с помощью MAX (ID) на matches_payments

желаемому результат

enter image description here

, но я не получаю желаемый результат из-за greatest-n-per-group проблем ,

Запрос

SELECT matches.id, mp.* 
FROM matches 
    LEFT JOIN (SELECT 
       MAX(id) AS id, 
       match_id 
       paymentStatus 
      FROM matches_payments 
      GROUP BY match_id) AS mp ON mp.id = matches.id; 

Желаемый результат не производится за счет: Stackoverflow Question

При использовании этой функции, все строки в каждой группе должны иметь одни и те же значения для столбцов, которые, совершенной из части GROUP BY. Сервер может возвращать любое значение из группы, поэтому результаты являются неопределенными, если все значения не совпадают. FROM MySQL Dev

PS: Я знаю, что столы плохо разработаны. Это не моя работа, как это делал последний разработчик.

+0

Вы можете также разместить свой 'sql' код с' Max() 'попытка? – lois6b

+0

@downvoter помочь объяснить? –

+0

Я не голосовал, но, может быть, потому, что вы оставили MCVE, требуемый для таких вопросов? – Barmar

ответ

1

Вам нужно два соединения. Вам нужно самоподключение таблицы matches_payments, чтобы получить строку с самым высоким идентификатором для каждого match_id, как показано в SQL Select only rows with Max Value on a Column. Тогда вы LEFT JOIN это matches объединить две таблицы:

SELECT m.*, mp.paymentStatus, mp.paymentAmount 
FROM matches AS m 
LEFT JOIN (
    SELECT mp1.* 
    FROM matches_payments AS mp1 
    JOIN (SELECT match_id, MAX(id) AS id 
      FROM matches_payments 
      GROUP BY match_id) AS mp2 
    ON mp1.match_id = mp2.match_id AND mp1.id = mp2.id 
) AS mp ON mp.match_id = m.id 
+0

спасибо за то, что нашли время, чтобы объяснить и разъяснить вещи :) –