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 :

Modélisation par méta données de SQLPRO


Sujet :

Requêtes MySQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 30
    Points : 27
    Points
    27
    Par défaut Modélisation par méta données de SQLPRO
    Bonjour,

    Je souhaiterais savoir s'il est possible avec MySQL d'appliquer le cours de SQLPRO sur la "modélisation par méta données". J'ai essayé avec MySQL 4.1.9 d'EasyPHP mais en vain !

    Est-ce que quelqu'un a des tuyaux à me fournir pour MySQL ?

    Sinon, avec quel SGBD pourrais-je y arriver ?

    Merci de me répondre

    Cordialement,

    Philippe

  2. #2
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    D'après ce que j'ai vu c'est tout à fait possible sous MySQL.

    Qu'est-ce que tu veux dire par "j'ai essayé mais en vain" ?
    Pensez au bouton

  3. #3
    Membre expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Points : 3 001
    Points
    3 001
    Par défaut
    C'est possible je l'utilise sur mon site ainsi que l'arborescence intervallaire. Néanmoins en 4.1 pour le dernier cas j'ai dû recoder en PHP les procédures stockées. Mais bon en 5.0 tout passe parfaitement.
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 30
    Points : 27
    Points
    27
    Par défaut
    Bonjour,

    Citation Envoyé par Maximilian
    D'après ce que j'ai vu c'est tout à fait possible sous MySQL. Qu'est-ce que tu veux dire par "j'ai essayé mais en vain" ?
    Voila, j'ai créé tant bien que mal mes tables à l'aide de PHPMyAdmin (C'est peut-être là que ça coince...)

    Lorsque je fais un SELECT avec plusieurs AND, ça ne me sort aucun résultat !
    Peut-être devrais-je upgrader ma version ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DON.CAR_ID = 123 AND CRE.CRE_VALEUR = valeur 1 AND
    DON.CAR_ID = 475 AND CRE.CRE_VALEUR = valeur 2
    Merci Alexandre T de m'avoir aussi répondu. L'arbre intervallaire marche très bien ! Seul soucis Méta Données. En ce qui concerne les procédures stockées et autres, mes livres de chevet sont ceux de SQLPRO et de PostgreSQL, j'apprends.

    Cordialement,

    Philippe

  5. #5
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Citation Envoyé par hphil
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DON.CAR_ID = 123 AND CRE.CRE_VALEUR = valeur 1 AND
    DON.CAR_ID = 475 AND CRE.CRE_VALEUR = valeur 2
    Si tu cherches les lignes dont le CAR_ID vaut à la fois 123 et 475 c'est normal que tu ne trouves pas de résultat
    Pensez au bouton

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 30
    Points : 27
    Points
    27
    Par défaut
    Citation Envoyé par Maximilian
    Si tu cherches les lignes dont le CAR_ID vaut à la fois 123 et 475 c'est normal que tu ne trouves pas de résultat
    C'est pourtant l'exemple de SQLPRO dans les primitives SQL de manip:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT *
    FROM   TR_PROSPECT_PRP PRP
           LEFT OUTER JOIN T_DONNEE_DON DON
                ON PRP.PRP_ID = DON.CRE_LIGNE
    WHERE  DON.TBL_ID = 44            -- lien pour la table TR_PROSPECT_PRP
      AND  DON.CAR_ID = 123           -- lien pour une caractéristique donnée, par exemple 'CHIFFRE D''AFFAIRE'
      AND  CRE.CRE_VALEUR = valeur 1  -- valeur demandée pour la caractéristique sus mentionnée
      AND  DON.CAR_ID = 475
      AND  CRE.CRE_VALEUR = valeur 2
      AND  DON.CAR_ID = 74
      AND  CRE.CRE_VALEUR = valeur 3
      AND  DON.CAR_ID = 7
      AND  CRE.CRE_VALEUR = valeur 4
    Pour répondre à la question :

    si vous recherchez les prospects dont la forme de société est SA, ayant fait un CA > 50000 et dont le dernier contact > 1 mois...

    Sinon, comment faire des recherches muti critères avec un tel schéma ???

    Cordialement,

    Philippe

  7. #7
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Ca ne serait pas des OR plutôt ?
    Pensez au bouton

  8. #8
    Membre expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Points : 3 001
    Points
    3 001
    Par défaut
    Insertion de données à modifier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO TR_TYPE_DONNEES_TDN (TDN_ID, TDN_SQL_TYPE, TDN_LONGUEUR)
    VALUES (6, 'FLOAT', NULL);
    Modification dû à MySQL et à la norme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO TR_DONNEES_DON (TBL_ID, CAR_ID, CRE_LIGNE, CRE_VALEUR)
    VALUES (1, 3, 168, CURRENT_DATE);
    Etourderie sur ls alias à changer en premier lieu.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT *
    FROM   TR_PROSPECT_PRP PRP
           LEFT OUTER JOIN T_DONNEE_DON DON
                ON PRP.PRP_ID = DON.CRE_LIGNE
    WHERE  DON.TBL_ID = 44            -- lien pour la table TR_PROSPECT_PRP
      AND  DON.CAR_ID = 123           -- lien pour une caractéristique donnée, par exemple 'CHIFFRE D''AFFAIRE'
      AND  DON.CRE_VALEUR = valeur 1  -- valeur demandée pour la caractéristique sus mentionnée
      AND  DON.CAR_ID = 475
      AND  DON.CRE_VALEUR = valeur 2
      AND  DON.CAR_ID = 74
      AND  DON.CRE_VALEUR = valeur 3
      AND  DON.CAR_ID = 7
      AND  DON.CRE_VALEUR = valeur 4
    A première vu il y a une erreur. La solution avec le OR est aussi une erreur. Cet exemple veut remonter les enregistrements donct les prospect ont le chiffre d'affaire de 1 million truc et dont le dernier contact est le XX/XX/XXXX et dont le truc bidule etc...

    La méthode Maximilian est juste mais retourne les enregistrements qui répondent à au moins un des critères. Si ils répondent à deux critères il aura d'ailleurs un doublon du numéro de prospect.

    Pour une interrogation de prospects qui répondent à TOUS les critères, je verrais plutôt cela avec les synonymes :
    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
    SELECT *
     
    FROM   TR_PROSPECT_PRP PRP
           LEFT OUTER JOIN T_DONNEE_DON DON1
                ON PRP.PRP_ID = DON1.CRE_LIGNE
           LEFT OUTER JOIN T_DONNEE_DON DON2
                ON PRP.PRP_ID = DON2.CRE_LIGNE
           LEFT OUTER JOIN T_DONNEE_DON DON3
                ON PRP.PRP_ID = DON3.CRE_LIGNE
           LEFT OUTER JOIN T_DONNEE_DON DON4
                ON PRP.PRP_ID = DON4.CRE_LIGNE
     
    WHERE  DON1.TBL_ID = 44            -- lien pour la table TR_PROSPECT_PRP
      AND  DON1.CAR_ID = 123           -- lien pour une caractéristique donnée, par exemple 'CHIFFRE D''AFFAIRE'
      AND  DON1.CRE_VALEUR = valeur 1  -- valeur demandée pour la caractéristique sus mentionnée
      AND  DON2.TBL_ID = 44            
      AND  DON2.CAR_ID = 475
      AND  DON2.CRE_VALEUR = valeur 2
      AND  DON3.TBL_ID = 44
      AND  DON3.CAR_ID = 74
      AND  DON3.CRE_VALEUR = valeur 3
      AND  DON4.TBL_ID = 44            
      AND  DON4.CAR_ID = 7
      AND  DON4.CRE_VALEUR = valeur 4
    Pour revenir aux prospects qui répondent à au moins un des critères et rejoindre les propos de Maximilian : (Attention au doublon de prospects)
    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 *
    FROM   TR_PROSPECT_PRP PRP
           LEFT OUTER JOIN T_DONNEE_DON DON
                ON PRP.PRP_ID = DON.CRE_LIGNE
    WHERE  DON.TBL_ID = 44            -- lien pour la table TR_PROSPECT_PRP
      AND  (
            DON.CAR_ID = 123           -- lien pour une caractéristique donnée, par exemple 'CHIFFRE D''AFFAIRE'
           AND  DON.CRE_VALEUR = valeur 1  -- valeur demandée pour la caractéristique sus mentionnée
           OR  DON.CAR_ID = 475
           AND  DON.CRE_VALEUR = valeur 2
           OR  DON.CAR_ID = 74
           AND  DON.CRE_VALEUR = valeur 3
           OR  DON.CAR_ID = 7
           AND  DON.CRE_VALEUR = valeur 4)
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 30
    Points : 27
    Points
    27
    Par défaut
    Merci Alexandre T pour ta réponse.

    Théoriquement, ta solution semble marcher, mais ne pense-tu pas que ta requête ne soit un peu trop lourde ?

    Si j'ai n critére de recherche, je dois joindre n fois la même table pour avoir le résultat escompté.

    Tu m'as dis que tu avais implémenté cette modélisation à titre personnel,
    • comment fais-tu pour interroger ce schéma ?
    • Est-ce une lacune de MySQL concernant les requêtes ensemblistes ?
    J'avais déjà contacté SQLPRO à ce sujet :

    Bonjour,

    Est-ce que la structure par méta-données est portable sous MySQL ?

    Le problème est que je n'arrive pas à interroger la table "données" lorsque je dépasse de plus d'un critère.

    Cordialement,

    Philippe
    Réponse de SQLPRO :

    En principe oui... Mais certaines version de MySQL n'accepte pas les requêtes ensemblistes ni sous requêtes...

    A +
    J'aimerais bien que SQLPRO nous donne quelques éléments de réponse les primitives SQL d'interrogation d'un tel modèle...
    ----------

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 140
    Points : 166
    Points
    166
    Par défaut
    Bonjour,

    Je viens juste de lire l'article d'SQLPro et je dois avouer que je n'ai jamais gérer de meta données donc j'espère ne pas dire de betises.

    Tout d'abord, je ne comprends pas pourquoi faire des jointures externe gauche entre les tables "TR_PROSPECT_PRP PRP" et "T_DONNEE_DON DON" alors que toutes les conditions portes sur la seconde et sont dans la clause WHERE

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 30
    Points : 27
    Points
    27
    Par défaut
    Bonjour,

    Citation Envoyé par mdevlieg
    Tout d'abord, je ne comprends pas pourquoi faire des jointures externe gauche entre les tables "TR_PROSPECT_PRP PRP" et "T_DONNEE_DON DON" alors que toutes les conditions portes sur la seconde et sont dans la clause WHERE
    Les conditions portent en effet sur la seconde table " T_DONNEE_DON " et le champ de recherche indexé DON.CRE_VALEUR. Cependant, avec une seule requête, on obtient le listing de tous les prospects répondant aux critères ainsi que ceux ne répondant pas à ces critères (NULL). Ca permet d'avoir deux informations en une requête !

    Par ex, je pourrais envoyer un mail de félicitation à tous les prospects répondant aux critères (CA > 50000) et par la même occasion, envoyer un mail de mise en garde de non respect des objectifs aux autres.

    Bien entendu, tout dépend de ce que l'on veut obtenir comme réponse. On pourrait très bien se passer d'une jointure externe.

    ----------

    Cordialement,

    Philippe

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

Discussions similaires

  1. Modélisation par méta données
    Par hphil dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 29/07/2014, 16h25
  2. [SP-2010] Modification de propiétés de type méta donnée par un SharePoint Workflow
    Par NicolasST dans le forum SharePoint
    Réponses: 2
    Dernier message: 05/06/2014, 12h48
  3. Modélisation base de données avec visio
    Par BIDA dans le forum Visio
    Réponses: 3
    Dernier message: 07/08/2007, 13h31
  4. La technique des méta données de sqlPro
    Par borndead dans le forum Schéma
    Réponses: 1
    Dernier message: 02/07/2007, 16h57
  5. [SQL] Modélisation par méta-donnée et index
    Par Alexandre T dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/02/2007, 17h11

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