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 :

Paramètre d'une sous requète venant de la requète mère


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 42
    Points : 29
    Points
    29
    Par défaut Paramètre d'une sous requète venant de la requète mère
    Bonjour,

    sous ce titre un peu trop long se cache un problème pas très compliqué. Voilà je voudrai faire une requete du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT table1.num, table2.date 
    FROM table1, table2 
    WHERE table1.num = table2.num
    AND table2.date=(
        SELECT MAX(date) FROM table2 where table2.num = ????????
    )
    en fait j'ai une liste d'objets dans la table1 identifié par leur num et dans la table2 j'ai une liste de mouvements par objet donc je veux selectionner juste le dernier mouvements.
    Déjà si quelqu'un a une requète plus simple je suis preneur.
    Ensuite mon problème c'est que je voudrai que la requète mère passe le table1.num à la sous-requète à la place des ?????? , est-ce possible?

    Merci

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 102
    Points : 28 387
    Points
    28 387
    Par défaut
    La ligne en cours de traitement...
    Pour bien voir ce qu'on fait, il est encore mieux de donner un alias à chaque table...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT    t1.num, t2.date 
    FROM     table1   AS  t1 
        INNER JOIN
            table2 AS t2
            ON    t1.num = t2.num 
    WHERE    t2.date = (    SELECT    MAX(t_2.date) 
                            FROM    table2 AS t_2
                            WHERE     t_2.num = t1.num )
    ;
    On peut aussi l'écrire avec EXISTS :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SELECT  t1.num, t2.date
    FROM    table1 AS t1
        INNER JOIN
            table2 AS t2
            ON  t1.num = t2.num
    WHERE   EXISTS
            (   SELECT  1
                FROM    table2 AS t_2
                WHERE   t_2.num = t1.num 
                HAVING    t2.date = MAX(t_2.date)
            )
    ;

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 42
    Points : 29
    Points
    29
    Par défaut
    Mais le 'table1.num' de la sous-requete va bien me renvoyer la ligne en cours de traitement ou toute les lignes de la table table1?...

Discussions similaires

  1. Passer un paramètre dans une sous-requête
    Par Lucier dans le forum Langage SQL
    Réponses: 1
    Dernier message: 09/10/2007, 10h07
  2. Réponses: 7
    Dernier message: 18/05/2005, 15h09
  3. Passage de paramètres dans une requête imbriquée
    Par DrakkoFR dans le forum Langage SQL
    Réponses: 2
    Dernier message: 07/02/2005, 12h46
  4. Ramener plusieurs champs dans une sous requête...
    Par David.V dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 12/01/2005, 07h54
  5. Réponses: 3
    Dernier message: 18/05/2003, 00h16

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