Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Outils > Designer
Designer Forum d'entraide sur Oracle Designer
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 04/03/2011, 10h00   #1
Nouveau Membre du Club
 
Inscription : avril 2006
Messages : 276
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 276
Points : 29
Points : 29
Par défaut prendre le max d'une date

Bonjour,

grâce à mon interface j'aimerai pouvoir récupérer la ligne de la dernière modification d'un libellé
j'ai un numéro de contrat et son libellé, le libellé peut changer et à chaque changement j'ai la date de modification. Je prends donc la plus récente

j'ai posé un filtre sur la date en prenant le max
Code :
1
2
SELECT max(date_)
FROM contrat
le problème est qu'il me prend uniquement le contrat dont la date est la plus récente, donc dans mon tableau j'ai qu'une seule ligne
alors que je veux le dernier libellé de contrat pour chaque contrat
il manque la notion de group by, mais comment le préciser dans le designer?

what's the problem???
nawal59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2011, 12h36   #2
Membre chevronné
 
Homme O. Joly
Support
Inscription : décembre 2010
Messages : 287
Détails du profil
Informations personnelles :
Nom : Homme O. Joly
Âge : 38
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Support
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2010
Messages : 287
Points : 617
Points : 617
Le problème est que votre filtre retourne le maximum pour la date sur l'ensemble de la table contrat. Visiblement vous souhaitez le maximum de la date pour chaque contrat.

Le filtre doit donc intégrer une contrainte sur le numéro de contrat (ou l'identifiant de contrat quel qu'il soit).
Code SQL :
1
2
3
4
5
SELECT * FROM  contrat e
WHERE e.date IN 
 (SELECT max(date)
  FROM contrat c
  WHERE c.id=e.id )
ojo77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2011, 09h52   #3
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 925
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Finance

Informations forums :
Inscription : décembre 2005
Messages : 2 925
Points : 4 547
Points : 4 547
where in (max) c'est un peu moyennageux, non?

bon, je ne sais pas si tu accès aux analytiques, si oui alors

Code :
1
2
3
SELECT * FROM 
(SELECT rank() over (partition BY id ORDER BY dat DESC) r,e.* FROM contrat e) 
WHERE r=1
__________________
Mon blog : laurentschneider.com
Mon livre : Advanced Oracle SQL Programming
laurentschneider 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 15h45.


 
 
 
 
Partenaires

Hébergement Web