IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Sélection de l'enreg le plus récent


Sujet :

Langage SQL

  1. #1
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Janvier 2003
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 201
    Par défaut Sélection de l'enreg le plus récent
    Bonjour

    Je dois effectué un requête de sélection d'enregistrement le plus récent.
    Voici la relation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    T_PRODUIT(0,n)->(1,1)T_CONTROLE
    Je dois sélectionner les produits ayant subi un contrôle dont la date de validité du contrôle est comprise entre une fourchette de date mais si il existe pour un même produit 2 contrôles (un ancien et un récent) je ne dois prendre que le dernier
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    La table T_PRODUIT est composé de PR_ID (identifiant) et PR_NOM (Nom du produit)
    La table T_CONTROLE est composé de CO_ID (identifiant), PR_ID, CO_DATE_VALIDITE (Date de validité du contrôle)
     
    PR_ID       PR_NOM
    1           Produit 1
    2           Produit 2
     
    CO_ID      CO_DATE_VALIDITE          PR_ID
    060001     20060212                  1
    060002     20060215                  1
    060003     20060224                  2
     
    Toutes les rubriques sont des chaînes textes
    Si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT T_PRODUIT.PR_NOM AS NomProduit,
    T_CONTROLE.CO_ID AS NumCtrl,
    FROM T_CONTROLE, T_PRODUIT
    WHERE T_PRODUIT.PR_ID = T_CONTROLE.PR_ID
    AND T_CONTROLE.CO_DATE_VALIDITE BETWEEN '20060201' AND '20060228'
    Cela me renvoie tous les enregs hors je ne voudrais que le 060002 et 060003
    Comment puis-je faire ?

  2. #2
    Membre confirmé
    Inscrit en
    Juin 2004
    Messages
    213
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 213
    Par défaut
    Salut,
    Dans ton cas la solution est de séléctionner le maximum du champs CO_DATE_VALIDITE masi dans ce cas tu devra l'afficher en sortie de ton select.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT MAX(.CO_DATE_VALIDITE),PR_NOM AS NomProduit,.CO_ID AS NumCtrl,
    FROM T_CONTROLE, T_PRODUIT
    WHERE T_PRODUIT.PR_ID = T_CONTROLE.PR_ID
    AND CO_DATE_VALIDITE BETWEEN '20060201' AND '20060228'
    group by PR_NOM,CO_ID
    Quand tu fais un select et que tes champs n'on pas du tout les mêmes noms tu n'est pas obligé de spécifier la table à laquelle ils appartiennent. C'est plus clair de mettre le nom de la table mais lorsque les nom sont assez long utilise les alias ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select a.champ1,b.champs2 from tablea a,tableb b

  3. #3
    Membre chevronné Avatar de XtofRoland
    Profil pro
    Inscrit en
    Août 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 357
    Par défaut
    si ca ne marche pas,
    essayes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    select * 
    	from t_produit p, 
    		 t_controle c,
    		 (select max(co_date_validite) as maxdate, pr_id 
     			from t_controle 
     			group by pr_id) x
    	where p.pr_id = t.pr_id and
    		  x.maxdate = c.co_date_validite and
    		  x.pr_id = c.pr_id

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 11/07/2010, 03h49
  2. Sélection de la date la plus récente
    Par claireflore dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 06/03/2009, 13h18
  3. Sélection des doublons les plus récents
    Par nitramm dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/06/2008, 09h37
  4. sélection de la date la plus récente
    Par karinal dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 24/08/2007, 14h28
  5. Sélection du plus récent avec jointure
    Par nicovmd dans le forum Langage SQL
    Réponses: 1
    Dernier message: 21/10/2005, 10h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo