Получить последний введенный идентификатор из таблицы в sql - PullRequest
0 голосов
/ 30 мая 2020

введите описание изображения здесь У меня есть таблица сотрудников. В этой таблице у меня n номеров ссуды. Теперь я хочу выбрать всех сотрудников с указанием суммы и даты последней взятой ссуды. Может ли кто-нибудь помочь мне в этом.

Вот что я сделал так far:

SELECT employee_id,employee_name,department_name, 
       designation_name,PF_type,PF_number,Opening_balance,
       MAX(Loan_id),MAX(loan_date), MAX(loan_amount)  
FROM single_roww1
GROUP BY employee_id

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

Ответы [ 4 ]

0 голосов
/ 30 мая 2020

стоимость и дата последнего взятого кредита

Кажется, вы хотите:

SELECT sr.*
FROM single_roww1 sr
WHERE sr.loan_date = (SELECT MAX(sr2.load_date)
                      FROM single_roww1 sr2
                      WHERE sr2.employee_id = sr.employee_id
                     );

Предполагается, что shat loan_date имеет правильный тип даты / времени в база данных (несмотря на то, как выглядят данные на изображении).

Для повышения производительности вам нужен индекс для (employee_id, load_date).

Обратите внимание, что если у сотрудника есть несколько ссуд на одну и ту же дату, будет извлечена последняя.

0 голосов
/ 30 мая 2020

Если требуется только строка, содержащая последний идентификатор ссуды, то вам нужен коррелированный подзапрос

SELECT *
FROM single_roww1 SR
WHERE LOAN_ID = (SELECT MAX(LOAN_ID) FROM single_roww1 WHERE EMPLOYEE_ID = SR.EMPLOYEE_ID);
0 голосов
/ 30 мая 2020

С коррелированным подзапросом в предложении WHERE:

SELECT s.employee_id, s.employee_name, s.department_name, 
       s.designation_name, s.PF_type, s.PF_number, s.Opening_balance,
       s.Loan_id, s.loan_date, s.loan_amount  
FROM single_roww1 s
WHERE s.Loan_id = (SELECT MAX(Loan_id) FROM single_roww1 WHERE employee_id = s.employee_id)
0 голосов
/ 30 мая 2020

Обновление: чтобы получить полную строку с максимальным идентификатором:

SELECT *
FROM loan
INNER JOIN
  (SELECT max(id) max_id
   FROM loan
   GROUP BY employee_id) x ON x.max_id = loan.id
group by employee_id;

Я должен упомянуть, что дизайн вашей таблицы БД без первичного ключа не очень хорошо разработан: https://i.stack.imgur.com/DTYO8.png

...