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 :

select avec autre select en condition


Sujet :

Langage SQL

  1. #1
    Membre habitué
    Inscrit en
    Septembre 2008
    Messages
    261
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 261
    Points : 164
    Points
    164
    Par défaut select avec autre select en condition
    Salut
    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
     
    select distinct tir_table.construction_number, tir_table.tire_sequence, 
    tir_table.loc_code1, tir_table.loc_code_disposition
    from tir_table, location, location_group, site
    where 
    tir_table.loc_code1 = location.loc_code 
    and (tir_table.loc_code_disposition = location.loc_code 
    or tir_table.loc_code_disposition = location_group.loc_group_code)
    and (select site.site_id
     from tir_table, location, location_group, site
    where (tir_table.loc_code1 = location.loc_code  
    and location.ref_site = site.site_id  
    ))  !=  (select  site.site_id
    from tir_table, location, location_group, site
    where (tir_table.loc_code_disposition = location.loc_code  and location.ref_site =  site.site_id )
    or  (tir_table.loc_code_disposition = location_group.loc_group_code 
    and location_group.ref_site =  site.site_id))

    Ma requuete me remonte trop de site, donc plante.
    Un loc_code, et une disposition sont chacun lie a deux sites d'ou la tete de la requete, et je voudrais remonter les id de ces deux sites, pour les prendre dans ma clause.
    N'etant pas le roi du sql, si quelqu'un voit le probleme, merci

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    C'est une horreur cette requête !

    Vous devriez commencer par apprendre les jointures et revenir nous voir avec la composition des tables et une expression claire du besoin parce que là c'est incompréhensible !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre habitué
    Inscrit en
    Septembre 2008
    Messages
    261
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 261
    Points : 164
    Points
    164
    Par défaut
    Je ne l'aurais pas postée si elle était belle, et qu'elle tournait...;}
    Enfin, en cherchant un peu, je m'approche d'un truc plus conforme.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 146
    Points : 1 412
    Points
    1 412
    Par défaut
    outre de regarder les jointures
    je voudrais suggérer de regarder les règles du forum

    C'est sensé faire quoi ?
    mais comme ça, en attendant plus de détail; je ne crois pas que cette forme de clause WHERE puisse fonctionner
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    (SELECT site.site_id
     FROM tir_table, location, location_group, site
    WHERE (tir_table.loc_code1 = location.loc_code  
    AND location.ref_site = site.site_id  
    ))  !=  (SELECT  site.site_id
    FROM tir_table, location, location_group, site
    WHERE (tir_table.loc_code_disposition = location.loc_code  AND location.ref_site =  site.site_id )
    OR  (tir_table.loc_code_disposition = location_group.loc_group_code 
    AND location_group.ref_site =  site.site_id))


    FROM tir_table, location, location_group, site
    1 : jointure
    2 : pourquoi cette table location_group alors qu'elle n'est nulle part dans la sous requête (
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT site.site_id
     FROM tir_table, location, location_group, site
    WHERE (tir_table.loc_code1 = location.loc_code  
    AND location.ref_site = site.site_id)
    ) !!!!
    3 : ...
    4 :...
    ...
    Merci d'ajouter un sur les tags qui vous ont aidé

  5. #5
    Membre habitué
    Inscrit en
    Septembre 2008
    Messages
    261
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 261
    Points : 164
    Points
    164
    Par défaut
    tu m'expliqueras pourquoi regarder les règles du forum


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT tir_table.construction_number, tir_table.tire_sequence, 
    tir_table.loc_code1, tir_table.loc_code_disposition
    FROM tir_table, location, location_group, site
    WHERE 
    tir_table.loc_code1 = location.loc_code 
    AND (tir_table.loc_code_disposition = location.loc_code 
    OR tir_table.loc_code_disposition = location_group.loc_group_code)
    La première partie de la requête n'a rien d'anormal.
    C'est sur la fin que ce n'était pas logique. Pour expliquer la chose, tir_table.loc_code1, tir_table.loc_code_disposition renvoient à deux id dans la table site, et c'est cela qui m'intéressait.

    Je voulais tout bêtement les champs du premier select à condition que tir_table.loc_code1, tir_table.loc_code_disposition renvoient à deux sites id différents. Après je passe par les 2 autres tables , parce que je n'ai pas le choix.

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Les règles du forum demandent (je résume de mémoire) de poster la compositions des tables concernées par le problème, un petit jeu de données et le résultat attendu.

    Exprime le besoin en français clair sans parler de colonnes et de tables mais seulement des concepts qui sont enregistrés dans les tables. On arrivera peut-être à comprendre un peu mieux.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  7. #7
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 146
    Points : 1 412
    Points
    1 412
    Par défaut
    Citation Envoyé par ifsera Voir le message
    tu m'expliqueras pourquoi regarder les règles du forum
    Ca demande d'indiquer le SGBD utilisé
    De fournir la structure des tables et leur liaison
    et d'expliquer en français ce que l'on souhaite

    Citation Envoyé par ifsera Voir le message
    La première partie de la requête n'a rien d'anormal.
    ah bon !
    il ne me semble pas qu'une écriture du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT ...
       FROM ...
    WHERE (SELECT ...
                   FROM ...
                 WHERE ...)
    soit correcte !!!

    Citation Envoyé par ifsera Voir le message
    C'est sur la fin que ce n'était pas logique. Pour expliquer la chose, tir_table.loc_code1, tir_table.loc_code_disposition renvoient a deux id dans la table site, et c'est cela qui m'intéressait.

    Je voulais tout bêtement les champs du premier select à condition que tir_table.loc_code1, tir_table.loc_code_disposition renvoient a deux sites id différents. Après je passe par les 2 autres tables , parce que je n'ai pas le choix.
    je suis désolé mais je ne comprends rien
    Expliquez la signification des tables et des colonnes (qu'est ce qu'elles signifient ?)
    Merci d'ajouter un sur les tags qui vous ont aidé

  8. #8
    Membre habitué
    Inscrit en
    Septembre 2008
    Messages
    261
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 261
    Points : 164
    Points
    164
    Par défaut
    Problème résolu depuis l'autre post en fait. Merci

    @dehorter olivier
    c'est le select from where, la partie normale, cf mon avant dernier post.

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

Discussions similaires

  1. Réponses: 25
    Dernier message: 22/09/2014, 12h37
  2. Réponses: 3
    Dernier message: 04/05/2011, 11h05
  3. Réponses: 9
    Dernier message: 07/03/2011, 16h18
  4. Comment écrire un SELECT avec 2 ou 3 conditions apres le WHERE ?
    Par pro.dotnet dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/02/2009, 22h01
  5. [SELECT] Faire un select avec des champs vides
    Par MinsK dans le forum Langage SQL
    Réponses: 1
    Dernier message: 09/08/2005, 00h05

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