Selectare ultima valoare pentru un id in tabela mysql


#1

Salutare,

Din urmatorul tabel:

+----------+----------------+
| IdClient | DataActivitate |
+----------+----------------+
|    1     |    01-01-2018  |
|    2     |    01-01-2018  |
|    3     |    04-04-2018  |
|    1     |    01-04-2018  |
|    1     |    12-03-2018  |
|    3     |    08-02-2018  |
|    1     |    27-03-2018  |
+----------+----------------+

Cum pot selecta pentru fiecare IdClient data cea mai mare, rezultatul din urma interogarii aratand sub forma:

+----------+----------------+
| IdClient | DataActivitate |
+----------+----------------+
|    1     |    01-04-2018  |
|    2     |    01-01-2018  |
|    3     |    08-04-2018  |
+----------+----------------+

Multumesc!


(Catalin Ionut Titov) #2

Cel mai bine pui tu aici ce ai încercat pana acum și nu a mers și te îndrumam apoi. Ce zici? Altfel cum mai înveți?


(cosmos) #3
SELECT id, max(d.DataActivitate) as data1 FROM test.data d
group by d.id

max() pt data cea mai mare, iar apoi un group by.

Rezultat:
image

De citit:

Un site cu exercitii sql + explicatii
https://sqlzoo.net/

Sper ca te ajuta !


#4

pentru a nu mai deschide un subiect nou care seamana cu acesta, postez in continuarea acestuia

tableTest
+-----------+--------+------------+
|  IdClient | IdUser |     Data   |
+-----------+--------+------------+
|    4      |   0    | 2010-01-01 |
|    3      |   78   | 2016-02-25 |
|    3      |   2    | 2018-03-12 |
+-----------+--------+------------+


SELECT
	IdClient
	IdUser
	MAX(Data) as Data

FROM tableTest

WHERE IdClient = 3

GROUP BY IdClient

In testul meu imi returneaza IdUser 3, cu ultima data 2018-03-12 insa ramane IdUser 78
Cum pot face sa imi returneze si IdUser-ul aferent celei mai mari dati?

Multumesc!


#6

Am gasit raspunsul dupa intense cautari

SELECT t1.*
FROM tableTest t1

INNER JOIN ( SELECT
	            IdClient
	            IdUser
	            MAX(Data) as Data

              FROM tableTest
              GROUP BY IdClient) t2
ON t1.IdClient = t2.IdClient AND t1.Data = t2.Data