Ktoś pomoże w tym zapytaniu, chciałbym wybrać tylko firmę i ostatnią datę logowania

Próbowałem kilku połączeń, bezskutecznie z pewnością korzystając z niewłaściwy sposób, bez logiki

COMPANY TABLE
id|company|
1 | compA |
2 | compB |
3 | compC |

.

LOGIN TABLE
id|         data             |FKcompanyTable
1 | 2018-05-25 11:05:46      | 1  
2 | 2018-05-25 11:07:46      | 1  
3 | 2018-05-25 11:06:46      | 2  
4 | 2018-05-25 11:05:46      | 3  
5 | 2018-05-25 11:08:46      | 3  
0
user8762292 3 czerwiec 2018, 14:29

3 odpowiedzi

Najlepsza odpowiedź

Wszystko, co musisz zrobić, to użyć grupy według firmy_ID i wybierz Max Date jako ostatniej daty logowania

select 
COMPANY.id as "company_name",
max(LOGIN.data) as "last_login"
from
COMPANY
inner join LOGIN on(LOGIN.FKcompanyTable = COMPANY.id)
group by COMPANY.id

Mam nadzieję, że to może pomóc

0
Emad Elpurgy 3 czerwiec 2018, 12:23
Select company.id,company.company,tbl_lastdate.lastdate
from company left join (select id as companyid,max(data) as lastdate from Login group by FKcompanyTable)tbl_lastdate on company.id = tbl_lastdate.companyid
0
Pouya Demokri 3 czerwiec 2018, 12:17

W przypadku twojej sprawy, zamiast używać JOIN, pójdę z SubQuery.

SELECT
c.company AS 'company_name',
(SELECT data FROM LOGIN WHERE FKcompanyTable = c.id ORDER BY id DESC LIMIT 1 ) as 'last_login'
FROM COMPANY c
0
theapache64 3 czerwiec 2018, 12:52