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 sur la réalisation d'une vue


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    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
    Par défaut Problème sur la réalisation d'une vue
    Bonjour tout le monde,

    voila, j'ai une base de données sous FrontBase avec 6 tables.
    Article(id, libelle, prix, Id_TypeArticle)
    TypeArticle(id, libelle)
    Attribut(id, nom, javaClasse, id_TypeArticle)
    ValeurAttribut(id, id_Article, id_TypeArticle, id_Attribut)
    ValeurAttributEntier(id, id_Article, id_TypeArticle, valeur)
    ValeurAttributTexte(id, id_Article, id_TypeArticle, valeur)

    => Ce qui est en gras sont les clés étrangère et ce qui est souligné sont les clés primaire.

    En sachant qu'a la base, ValeurAttributTexte et ValeurAttributEntier hérite de ValeurAttribut.

    Je souhaite que ma vue affiche tout les renseignements concernant le premier type d'article. Voici ce que j'ai fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT "a"."libelle" AS "article", "a"."prix" AS "prixArticle", "ta"."libelle" AS "TypeArticle", "att"."nom" AS "NomAttribut", "ValAttEntier"."valeur" AS "ValeurEntier", "ValAttTexte"."valeur" AS "ValeurTexte" FROM "article" AS "a","TypeArticle" AS "ta","Attribut" AS "att","ValeurAttributEntier" AS "ValAttEntier","ValeurAttributTexte" AS "ValAttTexte","ValeurAttribut" AS "va" WHERE ("a"."id_TypeArticle"="ta"."id") AND ("att"."id_TypeArticle"="ta"."id") AND ("va"."id_Attribut"="att"."id") AND ("va"."id_Article"="a"."id") AND ("va"."id_TypeArticle"="ta"."id") AND ("ValAttEntier"."id"="va"."id") AND ("ValAttEntier"."id_Article"="va"."id_Article") AND ("ValAttEntier"."id_TypeArticle"="va"."id_TypeArticle") AND ("ValAttTexte"."id"="va"."id") AND ("ValAttTexte"."id_Article"="va"."id_Article") AND ("ValAttTexte"."id_TypeArticle"="va"."id_TypeArticle") AND ("ta"."id"=1)
    mais rien s'affiche alors que si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT "a"."libelle" AS "article", "a"."prix" AS "prixArticle", "ta"."libelle" AS "TypeArticle", "att"."nom" AS "NomAttribut" FROM "article" AS "a","TypeArticle" AS "ta","Attribut" AS "att","ValeurAttribut" AS "va" WHERE ("a"."id_TypeArticle"="ta"."id") AND ("att"."id_TypeArticle"="ta"."id") AND ("va"."id_Attribut"="att"."id") AND ("va"."id_Article"="a"."id") AND ("va"."id_TypeArticle"="ta"."id") AND ("ta"."id"=1)
    cela m'affiche bien ce qui est dans le select.
    Donc mon problème est au niveau des tables ValeurAttribut, ValeurAttributTexte, ValeurAttributEntier.
    Mais je vois pas comment faire??

    Merci d'avance

  2. #2
    Membre éprouvé
    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
    Par défaut du nouveau
    Je pense avoir trouvé d'ou provient le problème mais je sait pas comment le résoudre, si quelqu'un a une idée??

    J'ai fais plusieurs tests, les voicis :
    1) Vue affichant que les valeursAttributsEntier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT "va"."id" AS "id", "va"."id_Attribut" AS "Attribut", "va"."id_Article" AS "Article", "va"."id_TypeArticle" AS "TypeArticle", "ValEnt"."valeur" AS "valeurEntier" FROM "ValeurAttribut" AS "va","ValeurAttributEntier" AS "ValEnt" WHERE ("va"."id"="ValEnt"."id") AND ("va"."id_Article"="ValEnt"."id_Article") AND ("va"."id_TypeArticle"="ValEnt"."id_TypeArticle") AND ("va"."id_TypeArticle"=1)
    2) Vue affichant que les valeursAttributTexte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT "va"."id" AS "id", "va"."id_Attribut" AS "Attribut", "va"."id_Article" AS "Article", "va"."id_TypeArticle" AS "TypeArticle", "ValTexte"."valeur" AS "valeurTexte" FROM "ValeurAttribut" AS "va","ValeurAttributTexte" AS "ValTexte" WHERE ("va"."id"="ValTexte"."id") AND ("va"."id_Article"="ValTexte"."id_Article") AND ("va"."id_TypeArticle"="ValTexte"."id_TypeArticle") AND ("va"."id_TypeArticle"=1)
    => je me suis rendu compte que la cela fonctionné parfaitement mais dés que je souhaite afficher les 2 types de valeurs dans la même vues, plus rien ne s'affiche. Donc je supose que mon problème provient d'un problème de jointure vu que les 2 tables appelles les même champs de la table "ValeurAttribut".

    Quelqu'un a t-il une idée??

    Cordialement!!

  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 : 62
    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
    C'est quoi tous ces guillemets dans les requêtes ? Ca marche ça ?

    Nettoyons tout ça, utilisons les jointures normalisées et passons à la ligne, ce sera plus lisible.
    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
    SELECT a.libelle AS article, a.prix AS prixArticle,
    	ta.libelle AS TypeArticle, att.nom AS NomAttribut,
    	ValAttEntier.valeur AS ValeurEntier, ValAttTexte.valeur AS ValeurTexte 
    FROM article AS a
    INNER JOIN TypeArticle AS ta ON a.id_TypeArticle = ta.id
    	INNER JOIN Attribut AS att ON att.id_TypeArticle = ta.id
    		INNER JOIN ValeurAttribut AS va ON va.id_Attribut = att.id
    			INNER JOIN ValeurAttributEntier AS ValAttEntier ON ValAttEntier.id = va.id 
    				AND ValAttEntier.id_Article = va.id_Article
    				AND ValAttEntier.id_TypeArticle = va.id_TypeArticle
    			INNER JOIN ValeurAttributTexte AS ValAttTexte ON ValAttTexte.id = va.id
    				AND ValAttTexte.id_Article = va.id_Article
    				AND ValAttTexte.id_TypeArticle = va.id_TypeArticle
    	INNER JOIN ValeurAttribut AS va2 ON va2.id_TypeArticle = ta.id
    INNER JOIN ValeurAttribut AS va3 ON va3.id_Article = a.id
    WHERE ta.id = 1
    J'ai ajouté deux instances de la table ValeurAttribut.
    En effet, dans votre requête, vous aviez vos 6 tables dans le FROM mais 7 conditions de jointures entre deux tables différentes (deux jointures sont à conditions multiples comme vous pouvez le voir dans la requête).

    On voit bien avec la syntaxe normalisée qu'on ne peut pas faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    FROM A
    JOIN B ON A.x = B.x
      JOIN C ON B.x = C.x AND A.x = C.x
    La seconde jointure est entre B et C, pas entre A et C ! Il faut donc une deuxième instance de C pour pouvoir réaliser la jointure.

    Passons à votre modèle de données :
    Article(id, libelle, prix, Id_TypeArticle)
    TypeArticle(id, libelle)
    Attribut(id, nom, javaClasse, id_TypeArticle)
    ValeurAttribut(id, id_Article, id_TypeArticle, id_Attribut)
    ValeurAttributEntier(id, id_Article, id_TypeArticle, valeur)
    ValeurAttributTexte(id, id_Article, id_TypeArticle, valeur)
    J'en déduis les morceaux de MCD suivants :
    1) Article -1,1----Typer----0,n- TypeArticle
    "Un article est d'un certain type"
    Structure OK.

    2) Attribut -1,1----Dépendre----0,n- Type article
    "Un attribut dépend d'un type d'article"
    Structure OK

    3) ValeurAttribut -1,1----Rattacher----0,n- Attribut
    Article -----------0,n--------|
    "Une valeur d'attribut se rattache à un attribut et à un article"
    Pourquoi reprendre id_TypeArticle alors que l'id_Attribut ou l'idArticle suffit à retrouver le type d'article ?

    4) ValeurAttributEntier -1,1----Etre----0,1- ValeurAttribut
    ValeurAttributTexte -1,1----Etre----0,1- ValeurAttribut
    Ici, l'id de ValeurAttribut suffirait. Inutile de reprendre les colonnes de ValeurAttribut, il y a redondance d'information.

    Vous devriez normalement avoir les tables :
    ValeurAttribut(id, id_Article, id_Attribut)
    ValeurAttributEntier(id_ValeurAttribut, Valeur)
    ValeurAttributTexte(id_ValeurAttribut, Valeur)

    Ce modèle plus simple simplifierait d'autant votre requête.
    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 éprouvé
    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
    Par défaut réponse à CinePhil
    C'est quoi tous ces guillemets dans les requêtes ? Ca marche ça ?
    Les guillemets c'est le logiciel qui les a mis(FrontBase).

    Pour la requête de la vue, je connais juste "SELECT......FROM....WHERE......."et non avec InnerJoin, donc ya t'il moyen de la réaliser avec "SELECT....FROM....WHERE......"??(car je suis en BTS et à la fin de l'année je présenterai surement le projet donc je voudrais pouvoir l'expliquer si je doit le faire.

    Pourquoi reprendre id_TypeArticle alors que l'id_Attribut ou l'idArticle suffit à retrouver le type d'article ?
    Ben j'ai repris id_TypeArticle tout simplement parce que :
    Article -- 0,n ---------(1,1)--ValeurAttribut
    et
    Article -- (1,1)----------(0,n--TypeArticle
    donc id de la table TypeArticle devient clé étrangère et clé primaire de la classe Article alors donc ValeurAttribut prend la clé primaire d'article.c'est bien ça??

    Donc cela me donne bien ce que j'avais fais,non??

    Cordialement

  5. #5
    Membre éprouvé
    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
    Par défaut
    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
    SELECT a.libelle AS article, a.prix AS prixArticle,
    	ta.libelle AS TypeArticle, att.nom AS NomAttribut,
    	ValAttEntier.valeur AS ValeurEntier, ValAttTexte.valeur AS ValeurTexte 
    FROM article AS a
    INNER JOIN TypeArticle AS ta ON a.id_TypeArticle = ta.id
    	INNER JOIN Attribut AS att ON att.id_TypeArticle = ta.id
    		INNER JOIN ValeurAttribut AS va ON va.id_Attribut = att.id
    			INNER JOIN ValeurAttributEntier AS ValAttEntier ON ValAttEntier.id = va.id 
    				AND ValAttEntier.id_Article = va.id_Article
    				AND ValAttEntier.id_TypeArticle = va.id_TypeArticle
    			INNER JOIN ValeurAttributTexte AS ValAttTexte ON ValAttTexte.id = va.id
    				AND ValAttTexte.id_Article = va.id_Article
    				AND ValAttTexte.id_TypeArticle = va.id_TypeArticle
    	INNER JOIN ValeurAttribut AS va2 ON va2.id_TypeArticle = ta.id
    INNER JOIN ValeurAttribut AS va3 ON va3.id_Article = a.id
    WHERE ta.id = 1
    J'ai essayé ta requête mais lorsque je l'exécute(que je regarde les lignes) ben rien ne s'affiche alors que je devrait avoir des choses. Ce qui est bizarre aussi c'est que je n'est pas de message d'erreur.
    Comment puis-je faire??


    Sinon j'ai essayé la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    select a.libelle as Article, a.prix as prixArticle, att.nom as Attribut, ValEnt.valeur as ValeurEntier, ValTexte.valeur as ValeurTexte
    from ValeurAttributEntier as ValEnt, ValeurAttributTexte as ValTexte, TypeArticle as ta, Article as a, Attribut as att
    where a.id_TypeArticle = ta.id
    and ta.id = att.id_TypeArticle
    and ValEnt.id  = (select va1.id
                             from ValeurAttribut as va1
                             and va1.id_TypeArticle = 1)
    and ValTexte.id = (select va2.id
                             from ValeurAttribut as va2
                             and va2.id_TypeArticle = 1)
    and ta.id = 1
    mais voici le message d'erreur que j'ai lorsque je souhaite la créer :
    Encountered an error while creating view.

    Semantic error 209. Expression is not of type BOOLEAN.
    Semantic error 485. Near: CREATE VIEW "_SYSTEM"."Vue_4" AS SELECT "a"."libelle" AS "Article", "a"."prix" AS "prixArticle", "att"."nom" AS "Attribut", "ValEnt"."valeur" AS "ValeurEntier", "ValTexte"."valeur" AS "ValeurTexte" FROM "ValeurAttributEntier" AS "ValEnt","ValeurAttributTexte" AS "ValTexte","TypeArticle" AS "ta","Article" AS "a","Attribut" AS "att" WHERE ("a"."id_TypeArticle"="ta"."id") AND ("ta"."id"="att"."id_TypeArticle") AND ("ValEnt"."id"=((SELECT "va1"."id" FROM "ValeurAttribut" AS "va1")) AND ("va1"."id_TypeArticle"=1)) AND ("ValTexte"."id"=((SELECT "va2"."id" FROM "ValeurAttribut" AS "va2")) AND ("va2"."id_TypeArticle"=1)) AND ("ta"."id"=1);.
    Semantic error 485. Near: "ValeurAttribut".
    Semantic error 116. Referenced TABLE - va1 - does not exist.
    Semantic error 485. Near: "va1"."id_TypeArticle".
    Semantic error 226. Referenced column - id_TypeArticle - not found.
    Semantic error 217. Datatypes are not comparable or don't match.
    Semantic error 485. Near: 1.
    Semantic error 024. Left-hand side of OR/AND is not of type Boolean.
    Semantic error 025. Right-hand side of OR/AND is not of type Boolean.
    Semantic error 217. Datatypes are not comparable or don't match.
    Semantic error 217. Datatypes are not comparable or don't match.
    Semantic error 209. Expression is not of type BOOLEAN.
    Semantic error 485. Near: "ValeurAttribut".
    Semantic error 116. Referenced TABLE - va2 - does not exist.
    Semantic error 485. Near: "va2"."id_TypeArticle".
    Semantic error 226. Referenced column - id_TypeArticle - not found.
    Semantic error 217. Datatypes are not comparable or don't match.
    Semantic error 485. Near: 1.
    Semantic error 024. Left-hand side of OR/AND is not of type Boolean.
    Semantic error 025. Right-hand side of OR/AND is not of type Boolean.
    Semantic error 217. Datatypes are not comparable or don't match.
    Semantic error 217. Datatypes are not comparable or don't match.
    Exception 363 (40:000). Transaction rollback.
    Comment puis-je faire??

    Cordialement!!

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Citation Envoyé par loic20h28 Voir le message
    Comment puis-je faire??
    Citation Envoyé par loic20h28 Voir le message
    Pour la requête de la vue, je connais juste "SELECT......FROM....WHERE......."et non avec InnerJoin, donc ya t'il moyen de la réaliser avec "SELECT....FROM....WHERE......"??(car je suis en BTS et à la fin de l'année je présenterai surement le projet donc je voudrais pouvoir l'expliquer si je doit le faire.
    Et bien en explorant sur Internet, par exemple sur ce forum, par exemple dans un des sujet "sticky" et en apprenant plus sur SQL (normalement cette phrase fait apparaître un Pro qui vous vendra un livre ).

  7. #7
    Membre éprouvé
    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
    Par défaut réponse à Waldar
    Désolé mais je préfère continuer comme on me la appris pour ne pas me mélanger.

    Puis toute façon le code SQL de CinePhil (avec les InnerJoin) ne fonctionne pas.

    Je me demande donc si c'est vraiment possible car en fait le résultat sera un truc du genre :
    LibelleArticle / NomAttribut / ValeurEntier / ValeurTexte
    Levis 501 / Taille / 36 /
    Levis 501 / Taille / 38 /
    Levis 501 / Tissu / / Jean
    En gros, pour chaque ligne on aura une colonne vide soit ValeurEntier soit ValeurTexte.

    Est-ce que cela est vraiment possible

    Cordialement!!

  8. #8
    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 : 62
    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 loic20h28 Voir le message
    Désolé mais je préfère continuer comme on me la appris pour ne pas me mélanger.
    Mauvaise réponse !
    Refuser d'apprendre à utiliser le langage normatif, c'est continuer d'utiliser un tournevis plat pour visser une vis cruciforme.

    Puis toute façon le code SQL de CinePhil (avec les InnerJoin) ne fonctionne pas.
    Sans effort pour chercher à comprendre pourquoi ça ne fonctionne pas, c'est sûr que ça ne va pas se faire tout seul !
    Pour info, j'ai passé plus d'une demie heure hier soir à décortiquer votre requête pour essayer de trouver ce qui n'allait pas.

    Je me demande donc si c'est vraiment possible car en fait le résultat sera un truc du genre :

    En gros, pour chaque ligne on aura une colonne vide soit ValeurEntier soit ValeurTexte.

    Est-ce que cela est vraiment possible ?
    C'est sûrement possible mais vu la complexité de votre machin et votre modèle de données mal foutu, je n'ai pas forcément la demie heure nécessaire maintenant. Je verrai ce soir chez moi si j'y pense et si j'ai envie.
    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 !

  9. #9
    Membre éprouvé
    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
    Par défaut
    J'ai trouvé pourquoi j'avais des lignes en trop, c'était dans mes jointure, c'est à dire que je n'avais pas besoin de deux instances de ValeurAttribut.(va2 et va3)
    Voici ce que cela me donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT  distinct ta.id AS id, a.libelle AS Article, a.prix AS PrixArticle, att.nom AS Attribut, COALESCE(ValeurEntier.valeur, 0) AS ValeurEntier, '' AS ValeurTexte
    FROM Article AS a
    JOIN TypeArticle AS ta ON a.id_TypeArticle = ta.id
    JOIN Attribut AS att ON att.id_TypeArticle = ta.id
    JOIN ValeurAttribut AS va ON va.id_Attribut = att.id AND va.id_TypeArticle = att.id_TypeArticle AND va.id_Article =a.id
    JOIN ValeurAttributEntier AS ValeurEntier ON ValeurEntier.id = va.id AND ValeurEntier.id_Article = va.id_Article   AND ValeurEntier.id_TypeArticle = va.id_TypeArticle
    WHERE ValeurEntier.id_TypeArticle = 1
    et cela m'affiche bien ce que je souhaite.

    Bon ben cette après-midi je vais essayer d'unir les 2 requêtes.

    Je te tiens au courant!!

    Cordialement!

  10. #10
    Membre éprouvé
    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
    Par défaut réponse à CinePhil
    Alors que tu avais une belle requête avec jointures normalisées, tu as remis les horreurs FROM A, B WHERE !!!!
    Mais t'inquiète pas CinePhil, j'ai conservé la vue avec les requêtes normalisées.
    La voici :
    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
    // Vue_Pantalon : requête normalisées
    SELECT Article, PrixArticle, Attribut, ValeurEntier, ValeurTexte
    FROM (SELECT  distinct a.libelle AS Article, a.prix AS PrixArticle, att.nom AS Attribut, COALESCE(ValeurEntier.valeur, 0) AS ValeurEntier, '' AS ValeurTexte
    FROM Article AS a
    JOIN TypeArticle AS ta ON a.id_TypeArticle = ta.id
    JOIN Attribut AS att ON att.id_TypeArticle = ta.id
    JOIN ValeurAttribut AS va ON va.id_Attribut = att.id AND va.id_TypeArticle = att.id_TypeArticle AND va.id_Article =a.id
    JOIN ValeurAttributEntier AS ValeurEntier ON ValeurEntier.id = va.id AND ValeurEntier.id_Article = va.id_Article   AND ValeurEntier.id_TypeArticle = va.id_TypeArticle
    WHERE ValeurEntier.id_TypeArticle = 1
     
    UNION
     
    SELECT  distinct a.libelle AS Article, a.prix AS PrixArticle, att.nom AS Attribut, 0 AS ValeurEntier, COALESCE(ValeurTexte.valeur, '') AS ValeurTexte
    FROM Article AS a
    JOIN TypeArticle AS ta ON a.id_TypeArticle = ta.id
    JOIN Attribut AS att ON att.id_TypeArticle = ta.id
    JOIN ValeurAttribut AS va ON va.id_Attribut = att.id AND va.id_TypeArticle = att.id_TypeArticle AND va.id_Article =a.id
    JOIN ValeurAttributTexte AS ValeurTexte ON ValeurTexte.id = va.id AND ValeurTexte.id_Article = va.id_Article   AND ValeurTexte.id_TypeArticle = va.id_TypeArticle
    WHERE ValeurTexte.id_TypeArticle = 1
    )AS ValeurPantalons
    Cordialement

  11. #11
    Membre éprouvé
    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
    Par défaut Petite information concernant FrontBase Manager
    Bonjour,

    J'apporte une petite information que je souhaité apporter depuis quelque temps mais pas eu le temps.

    Donc FrontBase Manager n'accepte pas les jointures normalisés lorsque l'on créer une Vue, je m'en suis aperçut, car j'en avais testé une et au final, il a re-modifier le code SQL avec SELECT.....FROM......WHERE.... par contre en mode requête, les jointures normalisées sont acceptés.

    Cordialement!!
    loic.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 07/05/2013, 16h33
  2. problème sur l'enregistrement d'une instance
    Par Génie dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 12/05/2006, 10h48
  3. problème de code javascript pour une vue 360°
    Par tomguiss dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/03/2006, 22h50
  4. Problème sur la réalisation d'une requête
    Par soso78 dans le forum Access
    Réponses: 1
    Dernier message: 06/10/2005, 13h17
  5. Erreur de syntaxe sur la création d'une vue.
    Par cgougeon dans le forum Installation
    Réponses: 3
    Dernier message: 09/09/2005, 11h00

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