Jointure-fusion occurrences récentes

Fermé
DJ-ELA28 Messages postés 5 Date d'inscription dimanche 7 août 2022 Statut Membre Dernière intervention 8 août 2022 - 7 août 2022 à 21:27
DJ-ELA28 Messages postés 5 Date d'inscription dimanche 7 août 2022 Statut Membre Dernière intervention 8 août 2022 - 8 août 2022 à 23:20

Bonjour à tous,

Je nouveau en mysql et je fais appel à vos lumières svp. Mon problème est le suivant : 

Je dispose d'une table A avec des enregistrements uniques  et d'une table B, contenant des des enregistrements avec des doublons, des triplons, voire plus , selon une date...

Je voudrais faire une colonne dans A  (my_column)  en faisant une LEFT JOIN avec les la table B mais seulement avec les occurrence récente 

exemple:

table A

Id

1

2

3

4

table B

Id         date

1          20/01/2022

2          15/02/2019

1          15/06/2022

3           22/04/2022 

4           12/04/2022

4           11/03/2022

1          11/05/2022

5           24/07/2022

5           11/02/2022

4           12/07/2022

résultat :

Table A

Id     Date

1      15/06/2022

2       15/02/2019

3       22/04/2022

4       12/07/2022

5       24/07/2022

Je vous en remercie par avance

Cordialement

DE

jour,


Windows / Chrome 95.0.4638.54

A voir également:

6 réponses

jee pee Messages postés 40596 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 26 décembre 2024 9 463
7 août 2022 à 22:54

Bonjour,

Peut être

SELECT A.id, MAX(B.date) from A
left join B on B.ID = A.ID
GROUP BY A.ID
ORDER BY A.ID

mais avec une telle structure, on peut tout simplement faire

SELECT id, MAX(date) from B
GROUP BY ID
ORDER BY ID

0
DJ-ELA28 Messages postés 5 Date d'inscription dimanche 7 août 2022 Statut Membre Dernière intervention 8 août 2022
7 août 2022 à 23:15

Merci beaucoup JP, ça fonctionne . J'aurais une dernière demande indépendamment de la premiere svp. Je voudrais rajouter une nouvelle colonne à la table B de façon à numéroté les occurrences en fonction des dates exemple

table B

Id         date                      num

1          20/01/2022           1   

2          15/02/2019           1    

1          15/06/2022           3

3           22/04/2022         1

4           12/04/2022         2

4           11/03/2022         1

1          11/05/2022          2

5           24/07/2022        2

5           11/02/2022        1

4           12/07/2022        3

Merci encore+++

0
jee pee Messages postés 40596 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 26 décembre 2024 9 463
7 août 2022 à 23:59

Je ne suis pas sur que l'on puisse faire cela en sql pur. Avec Oracle j'aurais utilisé du PL/SQL. Avec Mysql peut être une fonction ? mais je ne connais pas.


0
DJ-ELA28 Messages postés 5 Date d'inscription dimanche 7 août 2022 Statut Membre Dernière intervention 8 août 2022
8 août 2022 à 00:01

Merci quand même JP. une dernière chose pour la requête que vous m'avez proposez comment le résultat sera généré directement dans la table A par ajout d'une nouvelle colonne

Merci inifiniment

DE

Table A

Id     Date

1      15/06/2022

2       15/02/2019

3       22/04/2022

4       12/07/2022

5       24/07/2022

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
DJ-ELA28 Messages postés 5 Date d'inscription dimanche 7 août 2022 Statut Membre Dernière intervention 8 août 2022
8 août 2022 à 10:13

Bonjour,

Je réitère ma demande ci-dessous. Pour rappel JP m'a fait une proposition, une requête pour avoir le résultat souhaité :

SELECT A.id, MAX(B.date) from A
left join B on B.ID = A.ID
GROUP BY A.ID
ORDER BY A.ID

Or je voudrais que ce résultat apparaisse sur une nouvelle colonne créer dans la table la TABLE A.

J'ai fait un  : alter into table A date DATE   # j'ai rajouté la colonne date dans un premier temps

ensuite

update from table A

SELECT A.id, MAX(B.date) from A

left join B on B.ID = A.ID GROUP BY A.ID ORDER BY A.ID

SET A.date=B.date

Est-ce que vous pourriez m'aider à résoudre cela svp ?

En vous remerciant par avance

DE

0
jee pee Messages postés 40596 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 26 décembre 2024 9 463
8 août 2022 à 18:00

Je ferais plutot un
 

UPDATE TABLE A as A
set date = (select max(date) from table A as B where A.ID = B.ID group by B.ID)
1
DJ-ELA28 Messages postés 5 Date d'inscription dimanche 7 août 2022 Statut Membre Dernière intervention 8 août 2022
8 août 2022 à 23:20

Merci bcp JP c parfait!

Bonne soirée

DE

0