Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1597 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP, MYSQL] Réaliser un classement avec données de plusieurs tables

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP, MYSQL] Réaliser un classement avec données de plusieurs tables

n°2093872
Alex53440
Posté le 08-08-2011 à 10:54:33  profilanswer
 

Bonjour,
 
Je suis actuellement a la recherche de solutions pour effectuer un classement en PHP grace a des données de plusieures tables MYSQL : EX :
 
Table 1 -- champ NOM-z /champ points ==> 5
 
Table 2 -- champ NOM-e /champ points ==> 1
 
Table 3 -- champ NOM-a /champ points ==> 15
 
Table 4 -- champ NOM-w /champ points ==> 11
 
Table 5 -- champ NOM-x /champ points ==> 22
 
Je voudrais afficher dans ma page php
 
Chaque nom en ordre croissant en fonction des points... ICI:
Nom-x
Nom-a
Nom-w
Nom-z
Nom-e
 
 
En esperant avoir été clair Je remercie ceux qui prendront le temps de m'aider ;)

mood
Publicité
Posté le 08-08-2011 à 10:54:33  profilanswer
 

n°2093915
rufo
Pas me confondre avec Lycos!
Posté le 08-08-2011 à 13:22:06  profilanswer
 

Tu fais ta requête avec la clause "order by points DESC" à la fin :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2093919
Alex53440
Posté le 08-08-2011 à 13:25:30  profilanswer
 

J'y ai pensé mais comme les données viennent de tables différentes sa ne peut pas fonctionner ?
Bonne journée et merci de ta réponse

n°2093926
rufo
Pas me confondre avec Lycos!
Posté le 08-08-2011 à 13:37:10  profilanswer
 

ben gros malin, tu fais une jointure entre tes tables. :/ Si on appelle ça "bd relationnelles", c'est justement parce qu'il y a des relations entre les tables, via les clés primaires et clé étrangères. Si ce que je raconte est du chinois pour toi, je te conseille de lire qq tutos sur les BD, parce que sinon, tu vas galérer grave pour faire les autres fonctions de ton soft ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2093967
mrbebert
Posté le 08-08-2011 à 16:05:24  profilanswer
 

Je dirais qu'on est plus dans l'utilisation du "UNION" que de la jointure :heink:  
 
Un truc qui ressemblerait à ça :

Code :
  1. select Nom, point
  2. from (
  3.   (select Nom, point fromTable_1)
  4.   UNION
  5.   (select Nom, point fromTable_2)
  6.   UNION
  7.   (select Nom, point fromTable_3)
  8. ) Table_tout
  9. order by Point desc


---------------
Doucement le matin, pas trop vite le soir.
n°2094050
rufo
Pas me confondre avec Lycos!
Posté le 09-08-2011 à 09:10:02  profilanswer
 

oops, oui, j'avais pas vu les tables 1, 2, 3...
J'avais compris que les scores étaient dans une autre table... Encore une BD bien construite, ça, tiens :)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2094268
Alex53440
Posté le 09-08-2011 à 20:01:24  profilanswer
 

Salut et merci, ma Bd est très bien construite. Je n'ai pas qu'un classement a faire ne croit pas cela alros avant de critiquer irroniquement renseigne toi.
 
Je teste ;)

n°2094357
rufo
Pas me confondre avec Lycos!
Posté le 10-08-2011 à 09:22:35  profilanswer
 

Ben plusieurs tables qui contient un champ stockant une info de même nature, permets-moi de douter fortement que la BD est bien construite :/
 
Preuve en est, t'as eu du mal à écrire ta requête alors qu'avec une BD bien construite, généralement, l'écriture des requêtes se passe tout seul.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2094413
pop-pan
yay!
Posté le 10-08-2011 à 13:27:51  profilanswer
 

boarf, parfois c'est de l'optimisation justement que de separer une table en plusieurs.  
ca evite des problemes de deadlock en ecriture meme si ca rajoute un cout de consolidation.
 
apres de la la meme facon si tu n'as besoin que d'afficher les 10 premiers tu peux limiter les sub selects


---------------
[VDS] rail vesa, bras ecran, support TV / [ACH] des machins
n°2094414
rufo
Pas me confondre avec Lycos!
Posté le 10-08-2011 à 13:33:40  profilanswer
 

pop-pan a écrit :

boarf, parfois c'est de l'optimisation justement que de separer une table en plusieurs.  
ca evite des problemes de deadlock en ecriture meme si ca rajoute un cout de consolidation.
 
apres de la la meme facon si tu n'as besoin que d'afficher les 10 premiers tu peux limiter les sub selects


 
deadlock en ecriture -> sur mysql, tables de type InnoDB et tu lockes plus une tbale entière comme c'est le cas en myisam
 
optimisation justement que de separer une table en plusieurs -> ça s'appelle le partitionnement, ça existe sur la plupart des sgbd. C'est un mécanisme complètement transparent (une table logique, plusieurs fichiers physiques) et tu partitionnes sur des colonnes ou lignes ;)
 
afficher les 10 premiers tu peux limiter les sub selects -> order by + limit 0, 10 et une table bien indexée, ça fait l'affaire.
 
J'ajoute qu'en tunant le fichier de conf de mysql (principalement la taille des buffers et caches), tu peux grandement améliorer les perfs (à condition d'avoir de grosses requêtes sur des grosses tables, sur qq milliers d'enregistrement, ça se voit pas) ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
mood
Publicité
Posté le 10-08-2011 à 13:33:40  profilanswer
 

n°2094417
pop-pan
yay!
Posté le 10-08-2011 à 13:42:49  profilanswer
 

d'ou le "parfois" :)
 
je ne sais pas si il est en myisam ou innodb, mais j'imagine que si sa table est partitionnée logiquement c'est qu'il doit y avoir une raison.
en fait comme on connait pas vraiment ses contraintes c'est jamais evident.


---------------
[VDS] rail vesa, bras ecran, support TV / [ACH] des machins
n°2094442
rufo
Pas me confondre avec Lycos!
Posté le 10-08-2011 à 14:30:52  profilanswer
 

pop-pan a écrit :

d'ou le "parfois" :)
 
je ne sais pas si il est en myisam ou innodb, mais j'imagine que si sa table est partitionnée logiquement c'est qu'il doit y avoir une raison.
en fait comme on connait pas vraiment ses contraintes c'est jamais evident.


 
D'expérience, une très large majorité des utilisateurs venant sur ce forum avec des questions sur des requêtes qui sont dures à écrire ou qui marchent pas ont leur BD mal conçue :D


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2094456
mrbebert
Posté le 10-08-2011 à 14:39:20  profilanswer
 

Oui, je pense que quand on ne connaît pas le "UNION", il est peu probable que l'on maîtrise les avantages et inconvénients des tables partitionnées :whistle:


---------------
Doucement le matin, pas trop vite le soir.
n°2094484
pop-pan
yay!
Posté le 10-08-2011 à 15:40:13  profilanswer
 

ouep, ca arrive souvent que les requetes triviales posent probleme ici :)
 
mais ca veut pas forcement dire qu'il a la main sur le schema de la db.
 
tu peux souvent te retrouver avec une forme imposée ou l'on t'interdit de dénormaliser ou des cas ou les collations/encoding sont historiquement merdique (ahh la joie des tables en 8859-1 au milieu d'une base utf8 suite a une "consolidation" ) et ou tu en chies pour faire des trucs "propres" et ou ca rame a mort du coup :(


---------------
[VDS] rail vesa, bras ecran, support TV / [ACH] des machins
n°2094499
rufo
Pas me confondre avec Lycos!
Posté le 10-08-2011 à 16:27:20  profilanswer
 

pop-pan a écrit :

ouep, ca arrive souvent que les requetes triviales posent probleme ici :)
 
mais ca veut pas forcement dire qu'il a la main sur le schema de la db.
 
tu peux souvent te retrouver avec une forme imposée ou l'on t'interdit de dénormaliser ou des cas ou les collations/encoding sont historiquement merdique (ahh la joie des tables en 8859-1 au milieu d'une base utf8 suite a une "consolidation" ) et ou tu en chies pour faire des trucs "propres" et ou ca rame a mort du coup :(


 
J'ai dit que sa BD était très probablement mal conçue mais en aucun cas que c'était forcément de sa faute. Je suis parfaitement conscient du poids que l'historique peut avoir sur une appli :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP, MYSQL] Réaliser un classement avec données de plusieurs tables

 

Sujets relatifs
Quel language utiliser pour réaliser un schéma interactif simple?Flèches du clavier et jeu flash dans site PHP
Choix d'un framework PHP en 2011[PHP] Retrouver à la page précédente les données renseignées
petite question mysql_install_db[MySQL ]Problème sur ON DUPLICATE KEY UPDATE
[PHP] Question de n00b : comment ça coexiste le PHP et le JavaScript ?Ajax et session PHP erreur Incomplete Object
Communication PHP / C++ via un socket UNIX => blocage read/write 
Plus de sujets relatifs à : [PHP, MYSQL] Réaliser un classement avec données de plusieurs tables


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR