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 :

Besoin d'aide sur requetes imbriquées simples


Sujet :

Langage SQL

  1. #1
    Membre du Club Avatar de Kyti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 182
    Points : 59
    Points
    59
    Par défaut Besoin d'aide sur requetes imbriquées simples
    bonjour,

    j'ai besoin de faire une requête mais je n'y arrive pas, est ce que quelqu'un pourrait m'aider ?

    alors voilà :

    je tourne sous oracle

    j'ai 2 tables :
    client et commande
    client.code_client=commande.code_client

    dans cmmande j'ai un champ date_cmde et un champ etat_cmde (c'est à dire savoir où en est la commande : en cours, validée, etc)

    on peut bien sûr avoir plusieurs commandes pour un meme client.

    j'ai besoin d'isoler les clients qui ont une commande validée plus récente qu'une commande non validée.

    en gros j'ai besoin de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select code_client...
    from client
    where date_cmde_validee>date_cmde_non_validee
    et pour obtenir ces 2 dates, je veux faire :
    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
     
    -- commande non validée la plus ancienne
    select date_cmde 
    from commande 
    where rownum<=1
    and code_client=code_client de la premiere requete
    and (etat!=...) --non validée
    order by date_cmde asc
     
    -- commande validée la plus récente
    select date_cmde 
    from commande 
    where rownum<=1
    and code_client=code_client de la premiere requete
    and (etat=...) --validée
    order by date_cmde desc
    mais rownum ne marche pas lorsqu'on fait order by date DESC, car il prend systématiquement la plus ancienne

    ensuite j'ai besoin d'intégrer ces requetes à la premiere, j'ai essayé plusieurs techniques mais rien ne fonctionne
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    select c.code_client
    	   /*(select date_cmde 
    	   from commande 
    	   where code_client=c.code_client 
    	   and (etat=...) --validée
    	   order by date_cmde desc) as date_validee,
    	   (select date_cmde 
    	   from commande 
    	   where code_client=c.code_client 
    	   and (etat!=...) --non validée
    	   order by date_cmde desc) as date_non_validee,*/
    from commande c 
    	 /*(select date_cmde 
    	   from commande 
    	   where rownum<=1
    	   and code_client=c.code_client 
    	   and (etat=...) --validée
    	   order by date_cmde desc
    	   ) v,
    	   (select date_cmde 
    	   from commande 
    	   where rownum<=1
    	   and code_client=c.code_client 
    	   and (etat!=...) --validée
    	   order by date_cmde asc
    	   ) nv*/
    where --v.date_cmde>nv.date_cmde
    --and date_validee>date_non_validee
    	  (select date_cmde 
    	   from commande 
    	   where rownum<=1
    	   and code_client=c.code_client 
    	   and (etat=...) --validée
    	   --order by date_cmde desc
    	   )
    	   >
    	   (select date_cmde 
    	   from commande 
    	   where rownum<=1
    	   andcode_client=c.code_client 
    	   and (etat!=...) --non validée
    	   --order by date_cmde asc
    	   )
    voilà j'ai mis en commentaire tout ce que j'ai essayé, dans le select, le from et le where.
    mais rien ne marche, est ce que quelqu'un peut m'aider svp ?

    ça me retourne null quand je mets les 2 requetes que j'ai mises plus haut dans le where, alors qu'il y a des cas donc ça devrait m'en retourner.

    MERCI
    Kyti

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 99
    Points : 110
    Points
    110
    Par défaut
    Bonjour,

    Et si tu fais quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select distinct c.code_client
    from commande c
    where c.date_cmde_validee > (select max(date_cmde_non_validee) 
                                              from commande c2 
                                              where c2.code_client = c.code_client)

  3. #3
    Membre du Club Avatar de Kyti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 182
    Points : 59
    Points
    59
    Par défaut
    je te remercie Mystro c'est niquel
    Kyti

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

Discussions similaires

  1. [AC-2010] besoin d aide sur requete
    Par kem77 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 08/03/2012, 22h40
  2. Aide sur requetes imbriquées
    Par camyo dans le forum Requêtes
    Réponses: 1
    Dernier message: 13/04/2011, 07h27
  3. Besoin d'aide sur requete SQL
    Par s.godquin dans le forum Langage SQL
    Réponses: 1
    Dernier message: 16/04/2009, 10h34
  4. besoin d'aide sur requete
    Par philguio dans le forum Langage SQL
    Réponses: 7
    Dernier message: 25/03/2009, 09h37
  5. Réponses: 7
    Dernier message: 18/07/2008, 09h44

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