Trier bdd sur plusieurs champs

Eléphanteau du PHP | 34 Messages

07 sept. 2007, 12:26

Bonjour,

Voilà, aujourd'hui, j'arrive pas à réfléchir...
Donc je viens vers vous. Mr. Green

J'ai une bdd avec 8 champs
mot1 | nb_mot1 | mot2 | nb_mot2 | mot3 | nb_mot3 | mot4 | nb_mot4

dans chaque champs "motx", on peut avoir un seul mot, mais il peut-être le même et le champs nb_motx, c'est le nombre de fois qu'on l'a rencontré, exemple :

tortue | 8 | maison | 1| chanson | 14 | mois | 3
journal |5| mois | 6 | aviation | 2 | image |10

Je souhaiterais pouvoir faire un classement de tous les champs motx en fonction des champs nb_motx
chanson -> 14
images -> 10
mois -> 9
tortue -> 8
journal -> 5
aviation -> 2
maison -> 1

Et tout ça sans prendre en compte ni majuscule, ni accent.

Merci de votre aide

ViPHP
ViPHP | 2144 Messages

07 sept. 2007, 13:30

Très honnêtement, c'est vraiement pas génial comme structure de table.
Il vaudrait vraiement mieux avoir deux champ : mots et nombre de mots, et donc avoir un enregistrement par mots.

Avec une telle structure ce que tu souhaites faire devient enfantin.

Invité
Invité n'ayant pas de compte PHPfrance

07 sept. 2007, 14:50

Bas je ne peut pas changer ma struture parce qu'il y a d'autre champs

en gros:
id | nom | mot1 | etc...

Chaque nom à ces 4 mots et leur nombre
et je souhaite faire un classement des mots qui reviennent le plus.

Invité
Invité n'ayant pas de compte PHPfrance

07 sept. 2007, 14:51

Y a bien de recréer une table, mais bon... :roll:

ViPHP
ViPHP | 2144 Messages

07 sept. 2007, 15:07

Y a bien de recréer une table, mais bon... :roll:
Oui, avoir une table avec les champs principaux (id,nom,..) et une autre table avec mot et nb_mot et le champ id faisant le lien avec l'autre table.
tu auras donc un enregistrement dans la première table avec les id et nom, et quatre enregistrement dans la deuxième tables, un pour chaque mots.
C'est la seule solution propre et optimisée que je vois.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

07 sept. 2007, 15:12

Tu dois pouvoir faire une requête avec un distinct des libellés, un sum des nombre que tu appliques à 4 sous requêtes qui liste les couples libellés/nb, avec union pour regrouper les 4 champs en 1...

Enfin ceci dit, à réaliser, à maintenir, à faire évoluer, tu arais tout intérêt à revoir la structure de ta base comme le suggère iclo
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 34 Messages

12 sept. 2007, 15:28

Ok, merci.