Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/09/2011, 09h00   #1
Invité de passage
 
Inscription : juin 2004
Messages : 11
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 11
Points : 0
Points : 0
Par défaut Jointure 2 tables et fonction MAX

Bonjour

je souhaite récupérer dans une table l'enregistrement le plus récent en faisant une jointure avec la table contenant ma clé primaire.
Concrètement :
table1 : macle1 (cle primaire), monchamps1
table2 : macle2, monchamps2, datecreation2

Requete :
Code :
1
2
3
SELECT macle1,monchamps2,max(datecreation2)
FROM table1 p1, table2 p2
WHERE macle1 = macle2
==> dans ce cas je veux la bonne valeur de monchamps2 et datecreation2 en utilisant la fonction max(datecreation2)

MAJ : j'ai trouvé une solution qui me semble pas performante sur un gros volume de données

Code :
1
2
3
4
5
6
7
8
SELECT macle1,monchamps2,datecreation2
FROM table1 p1, table2 p2
WHERE macle1 = macle2
AND datecreation2 = (
             SELECT max(datecreation2)
             FROM table1 p1, table2 p2
             WHERE macle1 = macle2
              )
si quelqu'un a quelque chose de meilleur je suis preneur.


merci d'avance,
:-)
ade05fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 09h09   #2
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 311
Points : 5 813
Points : 5 813
First/Last
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 09h14   #3
Invité de passage
 
Inscription : juin 2004
Messages : 11
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 11
Points : 0
Points : 0
merci pour le lien mais concrètement je ferais comment ?
désolé je suis pas un pro sql
ade05fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2011, 08h53   #4
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 311
Points : 5 813
Points : 5 813
J'avais mal compris votre question
Code :
1
2
3
4
5
6
7
8
9
10
 
SELECT *
  FROM (
        SELECT p1.empno, p1.ename, p1.hiredate, p2.dname,
               row_number() over (ORDER BY p1.hiredate DESC) r
          FROM emp p1, dept p2
         WHERE p1.deptno = p2.deptno
)
WHERE r = 1
/
row_number ou rank ou dense_rank en fonction de ce que vous voulez obtenir si pleusieurs occurences "la plus recente" existent.
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h11.


 
 
 
 
Partenaires

Hébergement Web