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 :

[Access] [requête] - listing de couple


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2006
    Messages : 242
    Points : 94
    Points
    94
    Par défaut [Access] [requête] - listing de couple
    Bonjour
    Je souhaiterai mettre en place une requète spéciale.
    J'ai deux tables, qui ont en commun deux champs:
    Hn et Tn
    Dans la table 1, il n'y a toujours qu'un seul couple (Hn,Tn), c'est à dire pas deux couples identiques.
    Par contre dans la table 2, pour un couple (Hn,Tn) donné, je peux avoir plusieurs enregistrements.
    Je souhaiterai en fait, pour chaque couple (Hn,Tn) de la table 1, obtenir le dernier enregistrement de la table 2 correspondant au couple (Hn,Tn)
    J'ai bien compris l'utilisation de la fonction LAST, mais je n'arrive pas à concevoir cette fonction.
    Quelqu'un aurait une idée ?

  2. #2
    Nouveau membre du Club
    Inscrit en
    Mai 2002
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 35
    Points : 36
    Points
    36
    Par défaut
    Bonjour,

    Quel SGBD utilises-tu?
    Quelle est pour toi la dernière valeur du couple (Hn,Tn)? Est-ce la dernière insérée en base? Est-ce la plus grande valeur d'Hn? La plus grande valeur de Tn?

    Titia765

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2006
    Messages : 242
    Points : 94
    Points
    94
    Par défaut
    Je suis sous Access.
    Il me faut les champs du dernier enregistrement de chaque couple (Hn,Tn) dans la table 2, en prenant la liste de (Hn, Tn) de la table 1 qui eux sont uniques (couple unique)
    Merci d'avance

  4. #4
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    "Dernier" n'a aucun sens en SQL, tu n'as pas répondu à la question de Titia765 (cf http://sql.developpez.com/sqlaz/erreurs/#L5).

    En se basant sur un 3° champ nommé Champ3, et en supposant que la dernière valeur est la plus élevé (comme par exemple pour une date), la requête suivante devrait répondre à ton problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Hn, Tn, Max(champ3)
      FROM Table2
     GROUP BY Hn, Tn;
    je n'ai pas fait la jointure avec Table1, je n'en voyais pas l'utilité dans le cas présent, mais tu devrais pouvoir la rajouter sans soucis.
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2006
    Messages : 242
    Points : 94
    Points
    94
    Par défaut
    Dernier a une valeur
    la commande LAST permet de déterminer la dernière valeur inscrite d'un champ
    ex:
    SELECT LAST(id) FROM table WHERE age=18
    Cette requète renvoie le dernier id d'une table pour des personnes qui ont 18 ans. Cela permet de déterminer le dernier inscrit par exemple.

    En fait Hn et Tn sont représentatif d'une poche d'acier. La table 2 contient les composition chimique de l'acier dans le temps. Ce que je veux c'est récupérer la dernier composition chimique de chaque couple (Hn, Tn).
    En programmant en VB c'est très simple avec une boucle For ou autre, mais je souhaiterai savoir si il est possible d'obtenir une telle requète en SQL
    ex
    for each record in Resul_from_request_table_1

    requete_table_2= "SELECT LAST(id) AS num FROM table_2 WHERE Hn=record(hn) AND Tn=record(Tn)
    etc.

    next record

    Voyez vous la logique ?

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2006
    Messages : 242
    Points : 94
    Points
    94
    Par défaut
    J'ai compris l'astuce du "GROUPD BY" merci beaucoup.
    J'avais pas pensé utilisé mon "id" AUTOINCREMENT comme MAX
    Je vais m'attacher à recouper avec mon autre table et c'est ok je pense
    Encore merci

Discussions similaires

  1. [Access] Requête de consolidation
    Par MITCH31 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 02/02/2006, 14h04
  2. Access - Requête SQL - UPDATE
    Par tchoo83 dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 19/12/2005, 15h48
  3. Access pb liste deroulante modifiable
    Par unflag dans le forum Access
    Réponses: 9
    Dernier message: 17/10/2005, 06h58
  4. Réponses: 10
    Dernier message: 30/01/2005, 20h53
  5. Réponses: 14
    Dernier message: 06/08/2004, 15h12

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