2016-02-06 1 views
2

У меня есть имя таблицы как tnx_line_transfer. Схема, как показано нижеКак использовать внутреннее соединение в той же таблице

enter image description here

Теперь я хочу, чтобы генерировать выходной сигнал, как показано ниже

Выход

enter image description here

Я пытаюсь ниже запроса, но его не показывает должного вывода. что вопрос по этому запросу

SELECT 
    main_tbl.operator_id, 
    main_tbl.production_line 
FROM 
    tnx_line_transfer main_tbl 
INNER JOIN (
    SELECT 
     operator_id, 
     max(date) AS max_date 
    FROM 
     tnx_line_transfer 
    GROUP BY 
     operator_id 
) temp ON main_tbl.operator_id = temp.operator_id 

Если какой-либо другой альтернативы простое решение, пожалуйста, дайте мне know.Thanks заранее.

ответ

3

Вы пропустили, чтобы присоединиться date столбец с max_date.

SELECT main_tbl.operator_id, 
     main_tbl.production_line 
FROM tnx_line_transfer main_tbl 
     INNER JOIN (SELECT operator_id, 
          Max(`date`) AS max_date 
        FROM tnx_line_transfer 
        GROUP BY operator_id) temp 
       ON main_tbl.operator_id = temp.operator_id 
        AND main_tbl.max_date = temp.`date` --here 

Другой способ будет использовать Sub-Query

SELECT main_tbl.operator_id, 
     main_tbl.production_line 
FROM tnx_line_transfer main_tbl 
WHERE `date` = (SELECT Max(`date`) 
       FROM tnx_line_transfer temp 
       WHERE main_tbl.operator_id = temp.operator_id) 

Row_Number концепция пригождается для выше сценария, но, к сожалению, Mysql оленья кожа поддержки Window function's

+0

Спасибо большое – Faisal

Смежные вопросы