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 :

Sous requête de sous requête qui ne marche pas


Sujet :

Développement SQL Server

  1. #1
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut Sous requête de sous requête qui ne marche pas
    Hello tout le monde,

    Etant développeur, c'est toujours une joie de devoir écrire des requetes SQL...

    J'ai très simplifié les informations, je vous explique la situation :

    J'ai une table Produit et une table Graphique... Dans la table Graphique, on a l'ID du produit.
    Oui mais voilà, de temps en temps, un Produit se découpe en deux sous produit... Et le graphique est lui attaché au produit "mère".

    Et je veux faire une requete qui me ramène mes produit, et si possible le graphique du produit, ou celui du produit "mère".

    Pour retrouver le produit "mère", j'utilise les champs Num_Commun (commun à la mère et au fille) et un test sur Num_sousProduit qui est à null si il s'agit d'une mère...

    Tout devrait fonctionner mais non...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Select ID_Produit, Num_Commun, Num_SousProduit,
     
     
       (Select ID_Graphique from graphique where ID_PRoduit =
     
                      (Select ID_Produit from Produit as P2 where P2.Num_Commun=Num_Commun         
                       And Num_Sous_Produit is null)
                       ) as ID_Graph
     
      From Produit
    J'ai modifier cette requete pour voir ce que rapporte la sous requete de la sous requete : et il me ramène pourtant bien un résultat (dans TOTO), quelque chose m'échappe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Select ID_Produit, Num_Commun, Num_SousProduit, 
     
        (Select ID_Produit from Produit as P2 where P2.Num_Commun=Num_Commun         
                       And Num_Sous_Produit is null)
                       ) as TOTO,
     
       (Select ID_Graphique from graphique where ID_PRoduit =
     
                      (Select ID_Produit from Produit as P2 where P2.Num_Commun=Num_Commun         
                       And Num_Sous_Produit is null)
                       ) as ID_Graph
     
      From Produit
    Je pense que ça il y a un problème que je ne vois pas, soit ça marche, et c'est ma requete pas simplifié qui a un problème de syntaxe ou autre...
    Si quelqu'un a une idée...

    Merci d'avance.
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  2. #2
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Ah oui et bien évidemment, si je passe par des sous requêtes, c'est parce que la vrai requête est bien plus compliqué, avec d'autres paramètres...
    C'est ma seule contrainte...
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 769
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 769
    Points : 52 720
    Points
    52 720
    Billets dans le blog
    5
    Par défaut
    Récrite avec des jointures :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT P.ID_Produit, P.Num_Commun, P.Num_SousProduit, G.ID_Graphique
    FROM   Produit AS P
           LEFT OUTER JOIN Produit   AS P2 ON P2.Num_Commun=P.Num_Commun AND Num_Sous_Produit is null
           LEFT OUTER JOIN graphique AS G ON G.ID_PRoduit = P2.ID_Produit
    Pour de plus amples aides, merci de respecter la charte de postage : http://www.developpez.net/forums/d96...vement-poster/

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. [AC-2003] Requête INSERT INTO sous VBA qui ne marche pas
    Par Shinoda00 dans le forum VBA Access
    Réponses: 2
    Dernier message: 09/03/2011, 09h56
  2. [php-mysql] requête qui ne marche pas....
    Par sanosuke85 dans le forum Requêtes
    Réponses: 1
    Dernier message: 09/01/2006, 17h18
  3. requête dans acces qui ne marche pas...
    Par sam01 dans le forum Access
    Réponses: 3
    Dernier message: 14/12/2005, 16h48
  4. HTTP_REFERER qui ne marche pas sous IE
    Par manaboko dans le forum Langage
    Réponses: 6
    Dernier message: 15/11/2005, 14h23
  5. javascript:history.go qui ne marche pas sous IE
    Par fpouget dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 23/09/2005, 08h23

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