|
Bas de page | |
---|---|
Auteur | Sujet : Requête SQL complexe et éviter table temporaire |
rufo Pas me confondre avec Lycos! | Bonjour,
--------------- Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta |
Publicité | Posté le 05-03-2009 à 15:52:46 |
rufo Pas me confondre avec Lycos! | J'ai essayé de stocker le résultat de cette requête dans une table temporaire :
--------------- Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta |
rufo Pas me confondre avec Lycos! | Bon ben en créant 1 table temporaire par champ perso, ça marche, mais j'ai un peu peur des perfs par la suite quand ma table contenant les valeurs des champs perso va être pas mal remplie ...
--------------- Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta |
rufo Pas me confondre avec Lycos! | up --------------- Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta |
rufo Pas me confondre avec Lycos! | oui, en gros, mais j'ai une table qui contient le paramétrage des champs personnalisés (ID, nom, type de valeur...), donc entre autre les nom "titi" et "toto" et une autre table qui contient leurs valeurs associées, un champ perso pouvant avoir plusieurs lignes dans cette table de valeurs si on a définit que les changements de valeurs du champ perso pouvaient être historisés.
Message édité par rufo le 20-03-2009 à 15:04:17 --------------- Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta |
rufo Pas me confondre avec Lycos! | Ca ne va pas marcher car dans le cas de champs ayant leurs changements de valeur historisés, je vais avoir la première valeur et non la valeur courante (la dernière). --------------- Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta |
rufo Pas me confondre avec Lycos! | c'est ce que j'ai fait (voir mes requêtes postés précédemment). Mon pb est de pouvoir retrouver des enregistrements de la table Aow qui sont liés à plusieurs champs perso dont la dernière valeur de chaque champ perso vaut une valeur donnée par l'utilisateur (moteur de recherche).
--------------- Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta |
Publicité | Posté le 20-03-2009 à 18:04:06 |
guybrush02 | Et bien tu fais une simple jointure comme j'ai fait en retirant la condition et tu auras accès à tous tes champs personnalisés. |
rufo Pas me confondre avec Lycos! | Bon, apparemment t'as pas compris mon pb ou alors, le SQL, c'est pas ton truc. Je vais donc faire un ex concret.
Message cité 2 fois Message édité par rufo le 22-03-2009 à 20:46:01 --------------- Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta |
guybrush02 |
|
akario | kler! t'es un peu brut de pomme rufo ! :-) |
rufo Pas me confondre avec Lycos! |
Message édité par rufo le 21-03-2009 à 10:00:26 --------------- Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta |
rufo Pas me confondre avec Lycos! |
--------------- Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta |
akario | Tu peux toujours remplacer une table tempo par un select imbriqué |
fluminis | Pour te faciliter la vie, est il possible de rajouter un champ dans la table des CustomFieldData ?
--------------- http://poemes.iceteapeche.com - http://www.simuland.net |
akario |
|
rufo Pas me confondre avec Lycos! | L'idée n'est pas forcément bête mais est contraire au principe de la conception d'une BD : tous ce qui peut être calculé ou redondant ne doit pas être stocké. Après, comme toute règle, il y a des exceptions, genre rajouter un champ pour stocker une valeur souvent calculée/demandée... Dans mon cas, je ne pense pas que ça se justifie.
--------------- Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta |
rufo Pas me confondre avec Lycos! | J'ai corrigé la ligne iD=7 de la table CustomFieldsValues, y'avait une erreur pour que le résultat fonctionne avec mon ex. Le bon résultat est le ticket 0903002 (ID=2) avec les champs persos ayant les entrées dans la table CustomFieldsValues ID=3 (valeur "Site n°3" ) et ID=5 (valeur=5).
--------------- Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta |
fluminis |
--------------- http://poemes.iceteapeche.com - http://www.simuland.net |
rufo Pas me confondre avec Lycos! | En formation MySQL, le formateur nous a demandé au début si y'avait des dba dans la salle. Y'avait que des développeurs en l'occurrence. Il nous a expliqué que les dba, ben ils aimaient pas les formes normalisées (style 3NF...) et que quand il en avait dans la salle, les dba lui disaient de faire son speetch sur les formes normalisées vite fait et qu'ils s'en tapaient parce que côté perfs, les formes normalisées, c'est pas toujours tip-top... --------------- Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta |
macgawel |
|
macgawel | [HS]
C'est aussi que les DBA, à chaque formation qu'ils font, ils ont droit aux formes normalisées, et au laïus comme quoi il faut normaliser à tout prix.
|
rufo Pas me confondre avec Lycos! | La liaison entre Aow et CustomFields se fait via CustomFieldsValues (avec les champs ObjectID qui pointe sur une ID de Aow et CustomFieldID).
--------------- Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta |
macgawel |
Mais du coup, la relation Aow <-> CustomFieldsValues est du type N,N |
rufo Pas me confondre avec Lycos! | Oui, c'est une relation N,N, je ne vois pas où est le pb. Qu'as-tu contre les relations N,N? --------------- Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta |
fluminis | bin juste qu'une relation N,N c'est pas trivial de selectionner dans une sous requete la ligne ou la date est la plus recente --------------- http://poemes.iceteapeche.com - http://www.simuland.net |
macgawel |
|
rufo Pas me confondre avec Lycos! | Bon, j'ai trouvé une méthode qui marche sans tables temporaires, par contre, c'est bête parce qu'il y a un bout de la requête qui est exécuté plusieurs fois (la partie justement qui était stockée dans les tables temporaires pour récupérer les ID des valeurs courantes des champs persos). Par contre, l'avantage, c'est que la ré-exécution de la requête est très rapide puisque mise en cache, ce qui n'est pas le cas avec la méthode des tables temporaires.
--------------- Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta |
Publicité | Posté le |