2015-11-03 5 views
1

Я просто редактирую свой старый код и стараюсь сделать хороший сложный запрос.Inner JOIN just last result

Мой запрос выглядит следующим образом:

SELECT axnmrs_cases.claimnumber as claim, axnmrs_cases.vin as vin, axnmrs_cases.date_created as date, axnmrs_calculations.totalcosts as totalcosts, axnmrs_cases.country as country 
        FROM axnmrs_cases 
        INNER JOIN axnmrs_calculations ON (axnmrs_cases.case_id = axnmrs_calculations.case_id 
        AND axnmrs_cases.country = axnmrs_calculations.country) 
        WHERE vin = :vin 

Это работает и отображения результатов, Что идеально (даже я не могу belieave это: D), но мне нужно только последний расчет не все из них.

   INNER JOIN axnmrs_calculations ON (axnmrs_cases.case_id = axnmrs_calculations.case_id 
       AND axnmrs_cases.country = axnmrs_calculations.country) ORDER BY axnmrs_calculations.calculation_id DESC LIMIT 1 

Однако я не уверен, как ограничить только INNER JOIN не весь запрос, может кто-нибудь посоветовать мне, пожалуйста?

Благодаря

+0

Вы хотите получить последний расчет за один раз в case_id? – Shadow

+0

Эй, @ Shadow, извините, я не был специфицирован, вы правы – Andurit

+0

Я думаю, что @Shadow неверен, так как у вас есть 'ON (axnmrs_cases.case_id = ... AND axnmrs_cases.country)'. Но я могу ошибаться. – Alex

ответ

0

Если вы хотите, последний расчет за case_id и страну, то вам необходимо создать производную таблицу (подзапрос в ЕКЕ), который получает вам это и вы присоединитесь таблицей случаев и расчетов по этому вопросу получены Таблица.

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