|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : août 2007 Messages : 55 ![]() |
Bonjour,
voici mon souci : sur ma page web je liste dans un tableau les clients d'une table "clients" (200 Ko. pas de PB jusque là. je voudrais ensuite ajouter une colonne avec "total transactions" qui correspond à la nombre de transactions effectuées par client. donc dans ma boucle qui liste les clients j'effectue ce calcul (nombre id de chaque client) en attaquant la table "paiement" qui fait environ 180000 enregistrements et qui pèse environ 32 Mo. le problème que je constate c'est que je vois un certains ralentissement à l'affichage de la page depuis (j'affiche 30 clients par page pour limiter). je voudrais aussi faire plus de stats avec ces données mais je pense qu'il faudrait optimiser tout ça avant. que me conseillez vous ? diviser la table paiement ? modifier une requête ? Merci pour l'aide. |
|
|
00
|
|
|
#2 | |
![]() ![]() |
Il est là ton ralentissement :
Citation:
Il faudrait que tu nous donnes la description des tables, la requête que tu as effectuée et l'explication de ce que tu veux compter pour qu'on puisse t'aider davantage à construire la requête.
__________________
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
|
|
|
#3 | ||||||||
|
Invité régulier
![]() Inscription : août 2007 Messages : 55 ![]() |
Merci pour ce 1er élément de réponse, je me doutait que faire une requête à chaque fois n'était pas très bon.
donc voici la requête pour lister les clients. je fais une jointure sur une autre table "users" pour récupérer certaines infos comme le nom du client par exemple. Code :
Code :
Code :
Code :
mais c'est une requête à chaque fois et ça ralentit l'affichage de la page. pour info, je suis sur un serveur dédié. Merci pour l'aide. |
||||||||
|
|
00
|
|
|
#4 | ||||
![]() ![]() |
Si je comprends bien, tu veux compter les id de la table paiement pour chaque id_user.
La requête simple pour faire ça est celle-ci : Code :
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
|
|
|
#5 | ||||
|
Invité régulier
![]() Inscription : août 2007 Messages : 55 ![]() |
ça avance doucement mais surement..
j'ai oublié de mettre la table users : Code :
users.id = users_paiement.id_user = paiement.id_site le but est d'arriver à faire une seule requête, mais je ne suis pas encore là. pour le moment j'arrive bien au résultat voulu mais en passant par un traitement PHP. voici le code : Code :
|
||||
|
|
00
|
|
|
#6 | ||||
![]() ![]() |
Citation:
Citation:
Citation:
Citation:
__________________
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
|
|
|
#7 | ||
|
Invité régulier
![]() Inscription : août 2007 Messages : 55 ![]() |
Citation:
Citation:
c'est aussi pour cela que je suis passé par un traitement php en attendant de trouver la soluce. la question est de savoir, si je peux faire tout cela sur une seule requête ? ce que j'ai besoin, c'est d'afficher la liste des clients (par page de n résultats) avec un certains nombre d'infos présents dans la table "users" et "users_paiement1" et le nombre de transactions par clients de la table "paiement" (voir une somme si c'est possible). j'ai aussi besoin d'indiquer le nombre de résultats trouvés au total (recherche ou pas). pour ça par défaut, je une clause qui passe à chaque fois et dès que j'ai 1 recherche je mets dans la clause le champ de recherche et la valeur demandée. |
||
|
|
00
|
|
|
#8 | |||
![]() ![]() |
Citation:
Citation:
Citation:
Lis la phrase en bleu de ma signature et applique son principe car ton expression de besoin est incompréhensible ! Un petit jeu de données et le résultat attendu aideraient à comprendre peut-être ?
__________________
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
|
|
|
#9 | |||||||
|
Invité régulier
![]() Inscription : août 2007 Messages : 55 ![]() |
Citation:
en fait la table "paiement" est commune à tous les clients. dans leur back-office, je remonte les transactions de chaque client avec cet id_site (leur id client de la table "users" est passée en session). Citation:
en jaune les éléments à traiter. le seul élément à récupérer de la table "users" est le champ pack, le reste vient de la table "users_paiement1" et le nombre de transactions de la table "paiement". j'ai retesté la requête suivante en corrigeant les noms des tables et des champs : Code :
|
|||||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com