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 :

Condition sur une requete imbrique


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2005
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 22
    Points : 19
    Points
    19
    Par défaut Condition sur une requete imbrique
    Bonjour,

    J'ai un probleme avec une requete SQL.
    Je sais que c'est faux, mais je souhaiterais ecrire quelquechose comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT * 
    FROM timeSheets 
    WHERE userid,week,year = (SELECT userid
                                      ,week
                                      ,year 
                              FROM timeSheets 
                              WHERE timesheetid = '2');
    Autrement dis, je souhaiterais selectionner tous les enregistrements de ma table timesheet dont les champs userid, week et year sont egaux a ceux de l enregistrement de la timesheet ayant pour id 2.
    Mais je ne sais pas trop comment ecrire ca...

  2. #2
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Salut !

    Je dirais bien un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT * 
    FROM timeSheets a
    WHERE EXISTS (
     SELECT 1 FROM timesheets b
     WHERE a.userid = b.userid
          AND a.week = b.week
          AND a.YEAR = b.YEAR
          AND b.timesheetid = '2')

    (c'est ma photo)
    Paku, Paku !
    Pour les jeunes incultes : non, je ne suis pas un pokémon...

    Le pacblog : http://pacmann.over-blog.com/

  3. #3
    Futur Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Décembre 2007
    Messages : 5
    Points : 6
    Points
    6
    Par défaut Re: Condition sur une requete imbrique
    Bonjour.
    Je pense qu'il faut écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT * 
    FROM timeSheets 
    WHERE timesheetid = '2'
    Puisque les enregistrements de la table timeSheets sont identiques à eux même on a plus besoin d'éffectuer d'autres comparaisons.

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 380
    Points
    18 380
    Par défaut
    Citation Envoyé par Master VKT Voir le message
    Puisque les enregistrements de la table timeSheets sont identiques à eux même on a plus besoin d'éffectuer d'autres comparaisons.
    Si le triplet (userid, week, year) constitue la clef primaire effectivement ce que vous dites est juste. Mais d'après l'énoncé du problème, ça ne l'est pas.

  5. #5
    Membre confirmé Avatar de elbj
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Services à domicile

    Informations forums :
    Inscription : Novembre 2004
    Messages : 371
    Points : 558
    Points
    558
    Par défaut
    Master VTK tu te trompes. Essaye avec ces données et tu comprendras pourquoi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    timesheetid      userid   week   year  ...
    -----------------------------------------------
         2              5       1    2005  ...
         1              5       1    2005  ...
         2              6       2    2004  ...
    +++
    Christophe B.

  6. #6
    Futur Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Décembre 2007
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Merci c'est vrai que je me suis trompé.
    Je proposerai plutôt ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT * 
    FROM TimeSheets as a JOIN TimeSheets as b 
                         ON (a.userid=b.userid) and (a.week=b.week) and (a.YEAR=b.YEAR) 
    WHERE b.timesheetid = '2'
    J'espère que là ça va.

  7. #7
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 380
    Points
    18 380
    Par défaut
    Oui au niveau jointure c'est correct mais en sortie ce n'est pas bon non plus, ça doit fonctionner avec un La requête de pacmann reste la plus adaptée et la plus simple à relire.

    Pensez à utiliser les balise CODE (le #) quand vous en mettez dans vos réponses.

Discussions similaires

  1. [MySQL] condition sur une requete sql
    Par brahda dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 21/05/2011, 18h09
  2. Soucis sur une requete imbriquée
    Par Gregory.M dans le forum Développement
    Réponses: 3
    Dernier message: 17/03/2009, 21h29
  3. condition sur une requete
    Par monpseudonom dans le forum Reports
    Réponses: 0
    Dernier message: 22/01/2009, 15h50
  4. Réponses: 2
    Dernier message: 11/01/2006, 15h49
  5. Condition sur une requete
    Par faayy dans le forum Langage SQL
    Réponses: 2
    Dernier message: 29/04/2005, 14h28

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