|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : mai 2011 Messages : 5 ![]() |
Bonjour,
Je fais face à un problème que je n'arrive pas à résoudre, et je suis sur qu'une ptite astuce toute simple existe ! J'ai pas mal de table à joindre en fonction de leur champs date. Le truc c'est que ces tables n'ont pas forcément été alimenté le jour voulue pour X raison, c'est pourquoi j'utilise des jointures externes. Mais voila, il y a bien un "from" et un "where" dans ma requète. Or si c'est justement la table du from/where qui n'a pas été alimenté, hé bien la requête ne renvoie rien : logique ! Comment peut-on pallier à ce soucis ? J'avais idée d'utiliser la table "dual" mais sans résultat... Quelqu'un à une solution ? N'hésiter pas à me demander des explications si je suis trop obscure. Merci @ tous |
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 850 ![]() |
salut,
pourquoi tu ne fais pas un truc simple: une table de référence que tu mets à jour à chaque acces à une de tes tables et dont tu te sers dans le from pour faire les jointures sur les autres tables... ref id int(4) stamp datetime Code sql :
__________________
Eric Dureuil, développeur web, c/c++, java indépendant soyons ![]() pensez à mettre et
|
||
|
|
00
|
|
|
#3 | ||
|
Invité de passage
![]() Inscription : mai 2011 Messages : 5 ![]() |
Merci pour ton aide Eric,
J'avais déjà penser faire quelque chose de la sorte mais si je peux éviter de rajouter une table ... Le "à chaque acces à une de tes tables" est assez lourd à mettre en place en fait ... ya pas mal de job différent qui l'alimente ! Il me faut juste une table fastice pour faire un truc du genre : Code :
|
||
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 850 ![]() |
salut,
oui tu peux aussi faire comme ça, mais tu auras des pb si tu as une date où il n'y a des résultats dans aucune des tables jointes mais l'avantage de la table réelle c'est que tu ne retournes des résultats que pour une date valide
__________________
Eric Dureuil, développeur web, c/c++, java indépendant soyons ![]() pensez à mettre et
|
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : mai 2011 Messages : 5 ![]() |
Au pire ca ne retourne rien non ?
Le problème avec ma solution, c'est que mysql n'a pas l'air d'aimer le : Ce n'est pas correct ? |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 850 ![]() |
c'est pas ça... ça marche
je te dit juste que tu aurais plus de cohérence à jointer sur une date ce qui te permettrait de t'assurer que les jointure ont une raison d'être puisque la date existe...
__________________
Eric Dureuil, développeur web, c/c++, java indépendant soyons ![]() pensez à mettre et
|
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : mai 2011 Messages : 5 ![]() |
Héhé ouioui j'ai bien compris la raison de ta solution, et j'avoue que c'est la plus propre. Mais dans mon cas présent elle n'est vraiment pas facilement implémentable ...
Sinon justement, ma solution ne marche pas avec "dual" ... Je viens de tester avec une table qui existe vraiment dans ma BDD et ca fonctionne... c'est juste trop laid parce que je dois mettre un alias dans le FROM pour pouvoir récupérer tout de même les données de mon "faux" FROM ... |
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 850 ![]() |
et oui
__________________
Eric Dureuil, développeur web, c/c++, java indépendant soyons ![]() pensez à mettre et
|
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Inscription : mai 2011 Messages : 5 ![]() |
Du coup je ne comprend pas pourquoi ca ne marche pas avec la table dual, ce n'est pas justement son but normalement ?
|
|
|
00
|
|
|
#10 |
|
Membre Expert
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 850 ![]() |
je sais pas ce qu'elle contient...
moi je serais de toi j'emploierai ma solution, plus propre et tu es sur que ça marche au pire fait des procédures stockées, si tu peux, pour encadrer tes différents appels et booster un peu les perfs
__________________
Eric Dureuil, développeur web, c/c++, java indépendant soyons ![]() pensez à mettre et
|
|
|
00
|
|
|
#11 | ||
![]() ![]() |
Si tu ne veux pas créer de table de calendrier contenant toutes les dates, tu peux créer une table temporaire contenant toutes les dates existantes dans toutes tes tables puis faire tes jointures externes à partir de cette table :
Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||
|
00
|
Copyright © 2000-2012 - www.developpez.com