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 :

prb avec deux select


Sujet :

Langage SQL

  1. #1
    Membre habitué Avatar de Dark Ryus
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 333
    Points : 162
    Points
    162
    Par défaut prb avec deux select
    Bonjour,

    Je ne suis pas très bon en requête SQL, donc mon problème sera peut-être facile.

    Je fais une première requête qui me retourne une lste de numéro, ex:
    select num from table where ........

    Ensuite je veux faire un autre select qi utilise la liste de numéro de la première requête, ex :
    pour chaque numero, select kkchose from autreTable where num=numero

    Est ce qu'on peux tout faire dans la même requête?

    Car en récupérant la liste de la première requête dans un tableau (PHP), puis en parcourant le tableau, je fais le deuxième select mais c'est très long car le tableau peut contenir beaucoup de valeurs ce qui fais un select pour chaque valeur du tableau.

    Merci

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 099
    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 099
    Points : 28 400
    Points
    28 400
    Par défaut
    C'est possible avec une jointure...
    Cours sur les Jointures en SQL

  3. #3
    Membre habitué Avatar de Dark Ryus
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 333
    Points : 162
    Points
    162
    Par défaut
    j'ai déjà lu ce cours, et j'ai u peu de mal, j'ai essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    select suivi_n_f_suivi 
    from suivi s1,
     lesobjets o1 inner join suivi s2,
     rubrique r2,
     lesobjets o2 
     on s2.suivi_typ_ref=concat(o2.lesobjets_classe,o2.lesobjets_type_reference)
    and o2.lesobjets_type_reference=230012 
    and r2.rub_codeobjet like '060008' 
    and s1.suivi_n_f_suivi=s2.suivi_n_f_suivi 
    and r2.rub_valeur='non'
    where s1.suivi_typ_ref=concat(o1.lesobjets_classe,o1.lesobjets_type_reference)
    and o1.lesobjets_type_reference=230012
    Il me dit qu'il y a une erreur à la ligne 69

    En fait je dois faire une première sélection, pui une deuxième avec les résultats de la première

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 099
    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 099
    Points : 28 400
    Points
    28 400
    Par défaut
    Commence par ajouter un espace entre 'non' et where.
    Puis ne mélange pas les jointures par INNER JOIN et les jointures dans le WHERE.
    Chaque JOIN table doit être suivi d'un ON condition

    Après remise en forme, la requête ressemble à ça :
    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
    select    suivi_n_f_suivi
    from    lesobjets o1 
        inner join 
            suivi s1
             ON    s1.suivi_typ_ref = o1.lesobjets_classe || o1.lesobjets_type_reference
        inner join 
            suivi s2
            ON    s1.suivi_n_f_suivi = s2.suivi_n_f_suivi
        inner join 
             lesobjets o2
             on    s2.suivi_typ_ref = o2.lesobjets_classe || o2.lesobjets_type_reference
        cross join 
            rubrique r2
    where    o2.lesobjets_type_reference = 230012
        and r2.rub_codeobjet like '060008'
        and r2.rub_valeur = 'non'
        and o1.lesobjets_type_reference = 230012
    ;
    Est-ce volontaire qu'il n'y ait aucune jointure sur RUBRIQUE ?

  5. #5
    Membre habitué Avatar de Dark Ryus
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 333
    Points : 162
    Points
    162
    Par défaut
    ben je sais pas trop, je suis un peu perdu

    ma requête 1 est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select suivi_n_f_suivi from suivi,lesobjets 
    where suivi_typ_ref=concat(lesobjets_classe,lesobjets_type_reference) 
    and lesobjets_type_reference=230012
    Cette requête me retourne une liste de suivi_n_f_suivi, et ma deuxième requête doit chercher parmis cette liste.

    ma requête 2 est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select suivi_n_f_suivi from suivi,rubrique,lesobjets 
    where suivi_typ_ref=concat(lesobjets_classe,lesobjets_type_reference)
     and lesobjets_type_reference=230012 
    and rub_codeobjet like '060008' 
    and suivi_n_f_suivi='suivi_n_f_suivi de la liste'
    and rub_valeur='non'

  6. #6
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 099
    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 099
    Points : 28 400
    Points
    28 400
    Par défaut
    Avec l'opérateur IN ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    select suivi_n_f_suivi from suivi,rubrique,lesobjets
    where suivi_typ_ref=concat(lesobjets_classe,lesobjets_type_reference)
     and lesobjets_type_reference=230012
    and rub_codeobjet like '060008'
    and rub_valeur='non'
    and suivi_n_f_suivi IN (select suivi_n_f_suivi from suivi,lesobjets
    where suivi_typ_ref=concat(lesobjets_classe,lesobjets_type_reference)
    and lesobjets_type_reference=230012)
    Utilisez des jointures normalisées et qualifiez vos colonnes, vos requêtes n'en seront que plus lisibles et maintenables

    PS : Il y a toujours un produit cartésien avec RUBRIQUE !

  7. #7
    Membre habitué Avatar de Dark Ryus
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 333
    Points : 162
    Points
    162
    Par défaut
    Il faut que je rajoute suivi_n_f_suivi=rub_numfiche

    Merci, ça marche

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

Discussions similaires

  1. [SQL Server 2K5] Requête INSERT avec deux SELECT
    Par gassisprog dans le forum Langage SQL
    Réponses: 3
    Dernier message: 27/08/2010, 14h55
  2. Réponses: 3
    Dernier message: 06/11/2007, 11h16
  3. Réponses: 21
    Dernier message: 03/08/2007, 12h19
  4. Requête SELECT avec deux champs dans une colonne ??
    Par fredhali2000 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 08/06/2006, 10h41
  5. UNION de deux SELECT avec nombre d'arguments différents
    Par orus8 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 16/07/2004, 14h32

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