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 :

probléme de requete sql


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 1
    Par défaut probléme de requete sql
    bonjour
    j'ai un problème avec une requete sql voici le mcd http://www.daveegerton.com/assets/im...prestashop.png
    j'ai fait la requête suivante mais elle ne renvoie pas ce que je veux

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    SELECT ps_product.id_product,
    ps_product_lang.name as nom_pdt,
    ps_attribute_group_lang.name as attributs,/*nom des attributs*/
    ps_product.price,/*prix sans déclinaison*/
    ps_tax.rate,/*Tva*/
    ps_product.wholesale_price,/*prix d'achat*/
    ps_attribute_lang.name as caractéristiques,/*valeurs des attributs*/
    ps_product_attribute.price as déclinaison ,/*déclinaison*/
    (ps_product.price + ps_product_attribute.price)as prix_HT,
    ((1+(ps_tax.rate/100))*(ps_product.price + ps_product_attribute.price)) as prix_final
     
    FROM ps_product,
    ps_tax,
    ps_product_lang,
    ps_attribute_lang,
    ps_product_attribute,
    ps_product_attribute_combination,
    ps_attribute_group_lang,
    ps_attribute_group,
    ps_attribute
     
    WHERE
    ps_product.id_product=ps_product_lang.id_product 
    AND ps_product_lang.id_lang=2 
    AND ps_product.id_tax=ps_tax.id_tax 
    AND ps_product_attribute_combination.id_product_attribute=ps_product_attribute.id_product_attribute 
    AND ps_product_attribute_combination.id_attribute=ps_attribute_lang.id_attribute
    AND ps_attribute_lang.id_lang=2
    AND ps_product.id_product=ps_product_attribute.id_product
    AND ps_attribute_group.id_attribute_group=ps_attribute_group_lang.id_attribute_group
    AND ps_attribute_group_lang.id_lang=2
    AND ps_attribute.id_attribute_group=ps_attribute_group.id_attribute_group ;
    mon but c''est d'avoir par exemple
    id_product 1|nom_pdt Ipod nano | /*attribut=*/ capacité /*valeur =*/8GO| /*attribut =*/Couleur /*valeur=*/ bleu |+ prix d'achat+prix_déclinaison + prix total ht + prix final ttc
    tous cela sur la même ligne
    si vous avez des questions n'hésitez pas
    si quelqu'un a une idée ça m'aiderait beaucoup
    merci

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Par défaut
    Bonjour,

    Votre requête serait beaucoup plus claire si vous utilisiez la syntaxe normalisée pour vos jointures (mot clé JOIN).
    S'il manque une jointure ce sera beaucoup plus visible, et il semble que ce soit le cas vu que vous avez 9 tables en jeu, pour 7 conditions de jointures.
    Le produit cartésien est-il voulu?

    Aussi, votre requête utilise 9 tables, et le MCD représente entre 50 et 100 tables, ça ne simplifie pas la recherche.

  3. #3
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    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 818
    Billets dans le blog
    14
    Par défaut
    Effectivement, cette requête est loin d'être lisible.
    Par contre, on voit après normalisation qu'elle possède le nombre de conditions de jointures requises.

    Je suppose que vous avez tous les attributs en colonne, ce qui est normal. Ce que vous cherchez à faire est de la cosmétique et n'est pas le boulot du SGDB mais celui du langage de programmation de l'application cliente.

    Voici la requête en SQL normalisé depuis 1992 et avec des alias pour que ce soit moins rébarbatif à lire et quelques espaces pour aérer et faciliter encore la lecture :
    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
    22
    SELECT p.id_product,
      pl.name AS nom_pdt,
      agl.name AS attributs, /*nom des attributs*/
      p.price, /*prix sans déclinaison*/
      t.rate, /*Tva*/
      p.wholesale_price, /*prix d'achat*/
      al.name AS caractéristiques, /*valeurs des attributs*/
      pa.price AS déclinaison, /*déclinaison*/
      (p.price + pa.price) AS prix_HT,
      ((1+(t.rate/100)) * (p.price + pa.price)) AS prix_final 
    FROM ps_product AS p
    INNER JOIN ps_product_lang AS pl ON p.id_product = pl.id_product 
    INNER JOIN ps_tax AS t ON p.id_tax = t.id_tax 
    INNER JOIN ps_product_attribute_combination AS pac ON pac.id_product_attribute = pa.id_product_attribute
      INNER JOIN ps_attribute_lang AS al ON pac.id_attribute = al.id_attribute
    INNER JOIN ps_product_attribute AS pa ON p.id_product = pa.id_product
    JOIN ps_attribute_group_lang AS agl
      JOIN ps_attribute_group AS ag ON ag.id_attribute_group = agl.id_attribute_group
    JOIN ps_attribute AS a ON a.id_attribute_group = ag.id_attribute_group
    WHERE pl.id_lang = 2 
      AND al.id_lang = 2
      AND agl.id_lang = 2
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    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 !

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Par contre, on voit après normalisation qu'elle possède le nombre de conditions de jointures requises.
    Possible, mais où est passée celle-ci?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    JOIN ps_attribute_group_lang AS agl

  5. #5
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    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 818
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par Snipah Voir le message
    Possible, mais où est passée celle-ci?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    JOIN ps_attribute_group_lang AS agl
    Oups ! Au temps pour moi !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    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 !

Discussions similaires

  1. Problème avec requete SQL/type NumAuto
    Par Mimisio dans le forum VBA Access
    Réponses: 5
    Dernier message: 27/07/2007, 11h56
  2. problème lancement requete sql
    Par skanderb dans le forum JSF
    Réponses: 4
    Dernier message: 02/05/2007, 16h46
  3. [WD 11] problème de requete SQL-LIKE
    Par fabpeden dans le forum WinDev
    Réponses: 5
    Dernier message: 24/04/2007, 17h07
  4. problème de requete SQL et recherche
    Par franfr57 dans le forum ASP
    Réponses: 1
    Dernier message: 16/03/2006, 13h33
  5. [ACCESS][SQL] Problème avec requete SQL ...
    Par mpascolo dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 09/11/2005, 10h54

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