SELECT finalValues.* FROM
matrix_values AS finalValues
INNER JOIN matrix_value_products AS finalProducts
ON finalProducts.matrix_value_id = finalValues.id
AND finalValues.created_at = (
SELECT max(created_at)
FROM matrix_values
INNER JOIN matrix_value_products
ON matrix_values.id = matrix_value_products.matrix_value_id
WHERE matrix_value_products.product_id = finalProducts.product_id
)
WHERE
matrix_id = 777
По сути, вы объединяете две таблицы и ограничиваете их значениями матрицы соответствующей матрицы.Затем вы ограничиваете весь Thing подзапросом, который возвращает только самую последнюю (таким образом, макс., Насколько я понимаю, запись create_at является полем datetime (2)).Вы должны использовать то же самое внутреннее соединение, что и только для того, чтобы ограничить его продуктами, связанными со значениями матрицы, которые вы хотите в итоге получить.