Основное понимание запроса соединения

Я знаю это очень глупое, но кто-либо может помочь мне в понимании, к чему это присоединяется, запрос делает в elabortive описании?

SELECT j1.*
FROM jos_audittrail j1
LEFT OUTER JOIN jos_audittrail j2
   ON (j1.trackid = j2.trackid AND j1.field = j2.field AND j1.changedone < j2.changedone)
WHERE j1.operation = 'UPDATE'
  AND j1.trackid=$t_ids[$n]
  AND j2.id IS NULL

Я знаю ее очень глупое, но я должен продолжить свою дальнейшую потребность... Помогите мне...

1
задан Peter Lang 10 May 2010 в 06:03
поделиться

1 ответ

Left Join в сочетании с j2.id IS NULL возвращает только те строки j1 , где нет строки с j2 можно найти.

Поскольку условие j1.changedone , оно возвращает только строки с наивысшим changedone на trackid (если их больше одна строка с этим значением изменена одна для trackid , все они возвращаются).


Итак, если у вас есть

trackid  changedone
      1           1
      1           2
      2           1

, вы получите

trackid  changedone
      1           2
      2           1

, поскольку для 1–1 Left Join находит запись ( 1-2 ) , поэтому j2.id равно NOT NULL .

2
ответ дан 3 September 2019 в 00:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: