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

Développement SQL Server Discussion :

Formuler une requête sql


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 25
    Par défaut Formuler une requête sql
    Bonjour à tous et à toutes,
    J'ai une question relative à l'écriture d'une requête qui doit faire le test suivant :

    Sur un ensemble de résultat retourné par une requête, j'ai des groupes d'enregistrement représentés par un id et d'autres champs.

    Ce que je souhaiterai, c'est de dire si pour un enregistrement dans le groupe X, le champ Y n'est pas égale à par exemple une valeur z, ne pas me retourner le champs mais aussi le groupe auquel appartient l'enregistrement.
    Exp :

    ID Statut Autres champs …
    11 1 …
    11 7 …
    23 2 …
    23 9 …


    Pour l'ID 23, Statut <> 7 , donc ne pas me retourner l'enregistrement 23 mais aussi l'enregistrement 23 avec statut 2.

    En gros, me laisser que les enregistrements qui ont eu un statut = 7 à une date

    Je ne sais pas comment formuler ce problème à l'aide d'une requête?
    Si je mets une condition Where statut = 7, le résultat est uniquement les enregistrement avec statut =7 mais pas les enregistrement avec le meme ID mais statut différent de 7.

    Pouvez-vous m'aider ?

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour,

    Je ne suis pas sur de bien comprendre le problème.

    Est-ce que cette requete vous donne ce que vous voulez ?

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT T.ID, T.Statut, T.AutreColonne
    FROM MaTable T
    INNER JOIN MaTable T2
        ON T.ID = T2.ID
        AND T2.Statut = 7

  3. #3
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Par défaut
    sinon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    select t1.*
    from t1
    where exists (
    select 1
    from t1 as t2
    where t1.id = t2.id
    and t2.status = 7
    )
    ou alors

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    select t1.*
    from t1
    where id in (
    select id
    from t1 as t2
    where t2.status = 7
    )

  4. #4
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 25
    Par défaut
    Merci sergejack pour t a réponse.
    J'ai testé ta première solution, elle a l'ai de bien marcher.
    Du coup, dans ton deuxième select :

    ....
    Where exists(

    select 1
    )

    Le '1' que veut-il dire exactement ?

  5. #5
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 25
    Par défaut
    Citation Envoyé par aieeeuuuuu Voir le message
    Bonjour,

    Je ne suis pas sur de bien comprendre le problème.

    Est-ce que cette requete vous donne ce que vous voulez ?

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT T.ID, T.Statut, T.AutreColonne
    FROM MaTable T
    INNER JOIN MaTable T2
        ON T.ID = T2.ID
        AND T2.Statut = 7


    Ta requête me donne le bon résultat.
    Je t'explique. J'ai des commandes différentes qui changent de statuts avec le temps. Du coup, quand le statut d'une commande change, on l'insère dans la base de donnée avec le meme id cmd mais avec un statut différent.
    Moi ce que je veux, c'est que la requête me retourne toutes les commandes qui ont eu a un moment donné le statut =7 (statut final), avec l'historique de ce qui s'est passé avant.
    c a d id cmd =23
    cette commande est passé d'un statut 1 a 9 a 5 a 7
    idcmd=56
    cette commane est passé d'un statut 1 à 5 à9 mais pas à 7

    La requete doit me retourner que la cmd 23 avec les differents statuts

    mais pas la commande 56.

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

Discussions similaires

  1. Conseils pour la formulation d'une requête SQL
    Par Saluzatous dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/01/2015, 17h16
  2. Aide pour formuler une requête sql
    Par viny dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 23/05/2008, 20h37
  3. [SQL] Problème pour formuler une requête SQL
    Par renaud26 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 22/03/2008, 18h35
  4. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38
  5. A propos d'une requête SQL sur plusieurs tables...
    Par ylebihan dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/09/2003, 16h26

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