Использование MySQL 5.6. У меня есть вид, который берет из одной главной таблицы с именем listquotes
, и несколько других предметов из других таблиц. Столбцы импорта в таблице, которые также находятся в представлении: Quote #
и Revision
. У нас может быть 5 разных ревизий одного и того же номера цитаты, поэтому наша таблица будет выглядеть как
id .... Quote# Revision
================================
1 1234 1
2 1234 2
3 1234 3
4 1234 4
5 1234 5
Теперь в моем приложении GUI есть выпадающий список, который должен позволить вам видеть только самые последние ревизии каждая цитата. Вот как я пытаюсь это сделать
SELECT
...columns...
FROM view_allQuoteInfo
LEFT JOIN listcustomers c ON c.id = view_allQuoteInfo.customerId
WHERE 1=1 AND view_allquoteinfo.customerId = 2453 AND view_allquoteinfo.quoteStatusId = 2 AND view_allquoteinfo.Revision = (SELECT max(t.Revision) FROM view_allquoteinfo t WHERE view_allquoteinfo.`Quote #` = t.`Quote #`)
ORDER BY idx DESC
Однако это не дает мне желаемых результатов. Вот анализ для конкретного клиента c, который я сделал в Excel, некоторые цитаты, которые имеют только одну ревизию, не отображаются, как 6668, в то время как другие, как 4730, у которого есть две ревизии, работают правильно
Предложение where для таблицы All в Excel -
1=1
AND view_allquoteinfo.customerId = 2453
AND view_allquoteinfo.quoteStatusId = 2
, а предложение для последней таблицы -
1=1
AND view_allquoteinfo.customerId = 2453
AND view_allquoteinfo.quoteStatusId = 2
AND view_allquoteinfo.Revision =
(SELECT max(t.Revision)
FROM view_allquoteinfo t
WHERE view_allquoteinfo.`Quote #` = t.`Quote #`)
, единственное отличие заключается в я пытаюсь получить самую последнюю версию. Логика c выглядит мне правильно, но, очевидно, MySQL интерпретирует это не так, как я думал.
Есть хоть какой-то ключ к пониманию того, почему он не работает или как я могу это исправить?
Я бы ожидал увидеть цитату 6668, редакцию 1 и цитату 5963, редакцию 4, в моей "Последней" таблице, тогда как цитата 5963, редакция 1,2,3 не будет там.