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 :

Besoin de conseil concernant cette requête SQL


Sujet :

Langage SQL

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut Besoin de conseil concernant cette requête SQL
    Bonjour tout le monde,

    Voici la structure de ma base :
    Article(id, id_TypeArticle#, libelle, prix)
    TypeArticle(id, libelle)
    Attribut(id, nom, javaClasse, id_TypeArticle#)
    ValeurAttribut(id, id_TypeArticle#, id_Article#, id_Attribut#)
    ValeurAttributEntier(id#, id_TypeArticle#, id_Article#, valeur)
    ValeurAttributTexte(id#, id_TypeArticle#, id_Article#,valeur)

    => les # signifie les clés étrangères et les champ soulignés sont les clés primaires.

    Voici la requête de ma vue :
    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
    SELECT Article, PrixArticle, Attribut, JavaClasse, id_ValeurAttribut, ValeurEntier, ValeurTexte 
    FROM 
    ((SELECT a.libelle AS Article, a.prix AS PrixArticle, att.nom AS Attribut, att.javaClasse AS JavaClasse, va.id AS id_ValeurAttribut, ValeurEntier.valeur AS ValeurEntier, '' AS ValeurTexte 
      FROM Article AS a,Attribut AS att,ValeurAttribut AS va,ValeurAttributEntier AS ValeurEntier 
      WHERE att.id_TypeArticle=a.id_TypeArticle 
      AND va.id_Attribut=att.id
      AND va.id_TypeArticle =a.id_TypeArticle 
      AND va.id_Article=a.id 
      AND ValeurEntier.id =va.id 
      AND ValeurEntier.id_Article=va.id_Article 
      AND ValeurEntier.id_TypeArticle=va.id_TypeArticle 
      AND ValeurEntier.id_TypeArticle=2
     )
     
    UNION
     
     (SELECT a.libelle AS Article, a.prix AS PrixArticle, att.nom AS Attribut, att.JavaClasse AS JavaClasse, va.id AS id_ValeurAttribut, 0 AS ValeurEntier, ValeurTexte.valeur AS ValeurTexte 
      FROM Article AS a,Attribut AS att,ValeurAttribut AS va,ValeurAttributTexte AS ValeurTexte 
      WHERE att.id_TypeArticle=a.id_TypeArticle 
      AND va.id_Attribut=att.id 
      AND va.id_Article=a.id 
      AND va.id_TypeArticle=a.id_TypeArticle 
      AND va.id=ValeurTexte.id 
      AND ValeurTexte.id_Article=va.id_Article
      AND ValeurTexte.id_TypeArticle=va.id_TypeArticle 
      AND ValeurTexte.id_TypeArticle=2
    )) AS Vue_Motos
    Il y a une question qui me turlupine le cerveau : cela fonctionne parfaitement mais as-t'on le droit de faire une jointure entre 2 clés étrangères?? plus précisément cette ligne est-elle règlementaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE att.id_TypeArticle=a.id_TypeArticle
    Merci d'avance pour vos réponse!

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 793
    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 793
    Points : 34 024
    Points
    34 024
    Billets dans le blog
    14
    Par défaut
    Conceptuellement, la réponse est non.
    Cette interrogation veint peut-être du fait que tu t'obstines à vouloir écrire des jointures non normalisées alors tu ne vois pas qu'il te faut plusieurs instances d'une même table pour réaliser les jointures correctement.

    As-tu vérifié les résultats produits par la requête avec un jeu de test ?
    Pas sûr que ça fonctionne si bien que tu le dis.
    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
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à CinePhil
    Cette interrogation veint peut-être du fait que tu t'obstines à vouloir écrire des jointures non normalisées alors tu ne vois pas qu'il te faut plusieurs instances d'une même table pour réaliser les jointures correctement.
    Ben comme j'ai dit dans mon précédent sujet, FrontBaseManager en mode vue n'accepte pas les jointures normalisées c'est à dire qu'il me les change tout seul en structure normale.

    As-tu vérifié les résultats produits par la requête avec un jeu de test ?
    Pas sûr que ça fonctionne si bien que tu le dis.
    Si je te promet, j'ai testé et cela fonctionne. J'avais juste besoin de savoir si cela été réglementaire ou pas. Je pensait que non mais pas sûr de moi donc toujours mieu de des professionnels.

    Merci pour tout!!

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

Discussions similaires

  1. Besoin d'infos pour une requête SQL
    Par jeanmarc1234 dans le forum Langage SQL
    Réponses: 11
    Dernier message: 07/03/2008, 19h47
  2. Pourquoi cette requête SQL ne marche pas toujours
    Par Platon93 dans le forum Requêtes et SQL.
    Réponses: 17
    Dernier message: 14/12/2006, 18h29
  3. Besoin d'aide pour une requête SQL
    Par Borami dans le forum Langage SQL
    Réponses: 1
    Dernier message: 07/11/2005, 11h33
  4. Besoin d'aide pour optimiser requête SQL
    Par Keuf95 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 06/09/2005, 17h02
  5. Besoin d'aide pour une Requête SQL ...
    Par Kokito dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/07/2004, 12h56

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