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

Requêtes MySQL Discussion :

Besoin d'aide sur un select trop complexe pour moi


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 12
    Points : 10
    Points
    10
    Par défaut Besoin d'aide sur un select trop complexe pour moi
    Bonjour,

    J'ai une table (qui n'est pas de moi):

    produit_element
    ID_produit | ID_element | type_element
    --------------------------------------
    26 | 96 |0
    26 | 94 |0
    26 | 92 |1
    92 | 13 |0

    Elle contient des produits, des sous-produits et des consituants.
    Un produit, c'est par exemple dans la la ligne verte l'ID 26, il possède un composant 96 car le type_element = 0.
    On peut avoir des sous-produits rattaché à des produits comme dans la ligne bleu (ID_element 92) car type_element = 1.

    Mon soucis, c'est de récupérer tous les conctituants d'un produit. Il me faut imbriquer un select dans un select (enfin je pense) pour atteindre le constituant ayant pour ID_element = 13.

    J'en suis là pour le moment:
    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
    19
    20
    21
    (
       SELECT distinct c.ID, c.reference
       FROM constituant c, produit_element pe
       WHERE pe.ID_produit = 123
       AND pe.ID_element = c.ID
       AND pe.type_element = 0
    )
    UNION
    (
       SELECT distinct c.ID, c.reference
       FROM constituant c, produit_element pe
       (
          SELECT distinct pe.ID_element
          FROM produit_element pe
          WHERE pe.ID_produit = 123
          AND pe.type_element = 1
       ) AS sp
       WHERE pe.ID_produit = sp.ID_element
       AND pe.ID_element = c.ID
       AND pe.type_element = 0
    )
    et cela me donne une erreur:
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '( SELECT distinct pe.ID_element FROM produit_element pe WHE' at line 12

    Je poursuis ma recherche/apprentissage, mais une petite aide n'est pas de refus. Merci d'avance.

    edit:
    A oui j'ai oublié d'expliquer que la table "constituant" me permet de transformer l'ID_element en reference plus lisible genre "CARTE ETOR". La valeur 123 correspond à un ID_produit ayant des constituant directement et des sous-produits.

  2. #2
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 12
    Points : 10
    Points
    10
    Par défaut
    Il me manquait une virgule à la fin du premier FROM de l'UNION. JE vais quant même vérifier que ça fais ce que cela doit faire avant de mettre résolu.

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

Discussions similaires

  1. UPDATE/SELECT un peu trop complexe pour moi
    Par Yateri dans le forum Langage SQL
    Réponses: 5
    Dernier message: 13/08/2010, 15h17
  2. Requête trop complexe pour moi
    Par snips67 dans le forum Requêtes
    Réponses: 6
    Dernier message: 27/01/2010, 09h24
  3. Tri complexe trop complexe pour moi
    Par nemo67 dans le forum Développement
    Réponses: 4
    Dernier message: 18/12/2009, 14h03
  4. Réponses: 0
    Dernier message: 04/12/2009, 14h17
  5. Une requête trop complexe pour moi
    Par prgasp77 dans le forum Langage SQL
    Réponses: 13
    Dernier message: 14/01/2009, 17h12

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