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 :

Recuperation d'une seule ligne parmi N via un join


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 25
    Points : 19
    Points
    19
    Par défaut Recuperation d'une seule ligne parmi N via un join
    Bonjour,
    1. Suis pas expert !
    2. voici le machin :
    Table A contient 3 champs 1 2 3
    Table B contient 3 champs 11 12 13

    Je voudrais
    sélectionner
    les champs 1 2 3 de la table A
    les champs 11 12 13 de la table B pour lesquels col B.12 = col A.1

    3. Le probleme :
    La table B contient des records historiques (date est dans le champ 13)
    La table B contient donc pour une valeur de la colonne 12 plusieurs occurences
    Or je voudrais l'occurence la plus récente (sur base de la datetime qui se trouve dans le champ B.13)

    Morti
    PS : je n'ai pas mis mon script, mais si cela est plus facile pour vous, je peux le faire ... dans une reponse;

    Merci d'avance pour vos pistes.

  2. #2
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 70
    Points : 84
    Points
    84
    Par défaut Une piste
    Bonjour,
    Si j'ai bien compris ton problème je te propose ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select a.1, a.2, a.3, b.11, b.12, b.13
      from a
            inner join b on ( b.12 = a.1 )
            inner join ( select 12, max(13) as 13 from b
                               gruop by 12 ) t
                on ( t.12 = b.12 and t.13 = b.13 )
    J'espère que j'ai bien répondu à ta question

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 25
    Points : 19
    Points
    19
    Par défaut
    Grand Merci,
    je regarde,
    j'essaierai de comprendre
    et je
    reviendrai ici dire quoi (demain par exemple).
    (;-)

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 25
    Points : 19
    Points
    19
    Par défaut
    Salut !

    Ton machin est tout simplement SUPER.

    pour info, je te donne le résultat après transcription dans mon environnement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    select
    	  adt.nomimpdel.pres_id, adt.nomimpdel.pat_id, adt.nomimpdel.visit_id, 
    	  adt.co_prescode.description, adt.co_prescode.pres_id, adt.co_prescode.lkp_language
    from 
    	adt.nomimpdel
    	inner join
    		  	  adt.co_prescode
    			  on
    			  (adt.co_prescode.pres_id = adt.nomimpdel.pres_id)
    	inner join
    		  	  (
    			  (select adt.co_prescode.pres_id, max(adt.co_prescode.lkp_language) as bl 
    		  	   from adt.co_prescode
    		  	   group by adt.co_prescode.pres_id)) t
    			  on
    			  (t.pres_id = adt.co_prescode.pres_id and t.bl = adt.co_prescode.lkp_language)
    			  where 
    	 adt.nomimpdel.pres_id like '202926%'
    Question subsidiaire (en passant merci pour ta collaboration et patience) :
    si une troisième table est concernée (par exemple je veux ceci pour un client dans la table des clients qui contient autant de records que d'historiques de mutations par client) ...
    mais c'est subsidiaire hein !

  5. #5
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 70
    Points : 84
    Points
    84
    Par défaut Ajoute une jointure
    Bonjour,
    Nous sommes tous une équipe au sein d'un club. Notre devoir est de nous entraider. Notre bonheur est dans notre réussite à nous tous. ça me fait vraiment plaisir quand mon aide arrive à sa finalité.

    Pour la table clients, ajoute juste une autre jointure vers cette table avec les critères que tu veux et ça devrait marcher.

    Bonne chance

  6. #6
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 25
    Points : 19
    Points
    19
    Par défaut
    Yep

    a+ Youssef

    Morti
    (bruxelles / Belgique)

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

Discussions similaires

  1. [Débutant] Recuperer le resultat d'une seule ligne select dans des variables ou un tableau
    Par Celia_anais dans le forum Accès aux données
    Réponses: 2
    Dernier message: 17/06/2015, 10h56
  2. Réponses: 1
    Dernier message: 25/08/2014, 08h25
  3. [Débutant] Recupere une seule ligne avec linq to entity.
    Par solaar dans le forum Entity Framework
    Réponses: 11
    Dernier message: 04/07/2013, 12h03
  4. Réponses: 12
    Dernier message: 13/08/2009, 09h31
  5. Réponses: 7
    Dernier message: 14/08/2007, 17h45

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