|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Futur Membre du Club
![]() Étudiant Inscription : janvier 2008 Messages : 46 ![]() |
Bonjour,
Je suis assez embêté par le temps de chargement beaucoup trop de long de mes pages. En effet, via PHP je dois générer un tableau dynamique et afficher des informations pour chaque article dans le tableau. Pour se faire j'ai créé une abomination que voici : Code :
Du coup comme je n'ai pas trouvé comme faire les deux requêtes en même temps, j'ai utilisé un UNION ALL Si quelqu'un a une idée pour rendre plus simple le bouzin je suis preneur. Merci |
||
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() ![]() Avcxjo MoKoRetraité Inscription : novembre 2005 Messages : 2 530 ![]() |
Saluton,
Il me semble qu'il te suffit de remplacer les INNER JOIN de la première requête par des LEFT JOIN et tu n'auras plus besoin de faire la deuxième requête donc l'UNION
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof articles : Comment émuler un tableau croisé [quasi] dynamique et : Une énigme mathématique résolue avec MySQL recommande l'utilisation de PDO (PHP5 Data Objects) |
|
00
|
|
|
#3 |
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
Attention quand même à la condition dans le WHERE qui porte sur la date. Elle casse à elle seule l'effet des LEFT JOIN.
Il faudra peut-être la passer en condition de jointure, ou alors l'améliorer par un OR...
__________________
Rédacteur / Modérateur SGBD Mes tutoriels et la FAQ MySQL ---------------------------------------------------- Pensez aux balises code et au tag Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
|
|
|
00
|
|
|
#4 |
|
Futur Membre du Club
![]() Étudiant Inscription : janvier 2008 Messages : 46 ![]() |
Oui c'est ce que je me disais... Qu'entends tu par conditions de jointure ou amélioration par un OR ? Tu pourrais développer ?
|
|
|
00
|
|
|
#5 | ||||
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
Pour que la jointure externe fonctionne, il faut passer la condition :
Code :
Ou alors, il faut modifier la condition par quelque chose comme : Code :
__________________
Rédacteur / Modérateur SGBD Mes tutoriels et la FAQ MySQL ---------------------------------------------------- Pensez aux balises code et au tag Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
|
||||
|
|
00
|
|
|
#6 | ||
|
Futur Membre du Club
![]() Étudiant Inscription : janvier 2008 Messages : 46 ![]() |
Code :
Pour le coup je vois pas comment faire à part mettre une valeur de base dans date1 pour les articles sans date ![]() EDIT : Merci ! |
||
|
|
00
|
|
|
#7 | ||
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
Tu peux utiliser la fonction COALESCE dans le ORDER BY, en mettant une date dans le futur. Ça placera les dates à NULL en fin de liste.
COALESCE prend les arguments qui lui sont passés dans l'ordre et renvoie le premier non null. Ainsi, en mettant une date dans le futur, si la date est à NULL, c'est la date future qui est renvoyée dans le ORDER BY, et les NULL se retrouvent à la fin : Code :
__________________
Rédacteur / Modérateur SGBD Mes tutoriels et la FAQ MySQL ---------------------------------------------------- Pensez aux balises code et au tag Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
|
||
|
|
10
|
|
|
#8 |
|
Expert Confirmé
![]() ![]() Avcxjo MoKoRetraité Inscription : novembre 2005 Messages : 2 530 ![]() |
Pas de problème, Ced, si Alzheimer ou tout autre épée de Damoclès ne m'a pas dégommé d'ici là, je le lui rappellerai.
Après tout, je n'aurai qu'à peine 99 ans ! L'espoir fait vivre.
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof articles : Comment émuler un tableau croisé [quasi] dynamique et : Une énigme mathématique résolue avec MySQL recommande l'utilisation de PDO (PHP5 Data Objects) |
|
00
|
Copyright © 2000-2012 - www.developpez.com