REQUETTE DE TRI - PHP - Programmation
Marsh Posté le 04-12-2002 à 15:51:30
DevilBozzo a écrit a écrit : Salut. G une table "essai" avec un champ "tri" ce champ tri ressemble à ça : ID 1 -> TRI 1 = "papa,maman,bebe" ID 2 -> TRI 2 = "papa,bebe" ID 3 -> TRI 3 = "maman,bebe" ID 4 -> TRI 4 = "papa,bebe,toto,maman" ID 5 -> TRI 5 = "maman,bebe,papa" ID 6 -> TRI 6 = "toto" ID 7 -> TRI 7 = "bebe,toto" Mon probleme consiste à faire extraire les lignes qui comportent : papa ET bebe papa ET maman ET bebe bebe (seul) ... J'arrive à faire OU mais pas ET // Marche si il y a papa OU bebe dans la chaine $result = mysql("$db","select * from essai where tri REGEXP \"papa|bebe\" " ); J'ai trouvé un autre truc avec LIKE qui marchait mais qui tenait compte de l'ordre des mots dans la chaine de départ. ID 1 -> TRI 1 = "papa,maman,bebe" ID 4 -> TRI 4 = "papa,bebe,maman" ID 5 -> TRI 5 = "maman,bebe,papa" la requette ne fonctionne que pour un seul de ces cas car les mots sont les memes mais pas l'ordre HELP ME ! |
Un truc du style
select bidule
from essai
where tri like '%bebe%' and tri like '%papa%' etc ...
Ca devrai marcher, non ?
Marsh Posté le 04-12-2002 à 15:53:37
Oui, mais ça ne corrrespond pas à la structure de ses données.
D'ailleurs, tant qu'on en parle, j'ai des doutes sur la structure. Ne peux-tu pas externaliser les critères de tri?
Marsh Posté le 04-12-2002 à 15:54:50
DevilBozzo a écrit a écrit : Salut. G une table "essai" avec un champ "tri" ce champ tri ressemble à ça : ID 1 -> TRI 1 = "papa,maman,bebe" ID 2 -> TRI 2 = "papa,bebe" ID 3 -> TRI 3 = "maman,bebe" ID 4 -> TRI 4 = "papa,bebe,toto,maman" ID 5 -> TRI 5 = "maman,bebe,papa" ID 6 -> TRI 6 = "toto" ID 7 -> TRI 7 = "bebe,toto" Mon probleme consiste à faire extraire les lignes qui comportent : papa ET bebe papa ET maman ET bebe bebe (seul) ... J'arrive à faire OU mais pas ET // Marche si il y a papa OU bebe dans la chaine $result = mysql("$db","select * from essai where tri REGEXP \"papa|bebe\" " ); J'ai trouvé un autre truc avec LIKE qui marchait mais qui tenait compte de l'ordre des mots dans la chaine de départ. ID 1 -> TRI 1 = "papa,maman,bebe" ID 4 -> TRI 4 = "papa,bebe,maman" ID 5 -> TRI 5 = "maman,bebe,papa" la requette ne fonctionne que pour un seul de ces cas car les mots sont les memes mais pas l'ordre HELP ME ! |
Il y a pas que les regexp dans la vie et à mon avis, deux like sont plus rapide qu'un regexp.
En SQL, t'as les mots clé OR et AND qui sont valide dans les conditions de la requête. Utilises les plustôt que de sortir une tronsoneuse pour couper une feuille de papier. (en plus REGEXP ne fait pas partie de la norme SQL)
Marsh Posté le 04-12-2002 à 15:57:46
omega2 a écrit a écrit : sortir une tronsoneuse pour couper une feuille de papier. |
Marsh Posté le 04-12-2002 à 15:44:24
Salut.
G une table "essai" avec un champ "tri"
ce champ tri ressemble à ça :
ID 1 -> TRI 1 = "papa,maman,bebe"
ID 2 -> TRI 2 = "papa,bebe"
ID 3 -> TRI 3 = "maman,bebe"
ID 4 -> TRI 4 = "papa,bebe,toto,maman"
ID 5 -> TRI 5 = "maman,bebe,papa"
ID 6 -> TRI 6 = "toto"
ID 7 -> TRI 7 = "bebe,toto"
Mon probleme consiste à faire extraire les lignes qui comportent :
papa ET bebe
papa ET maman ET bebe
bebe (seul)
...
J'arrive à faire OU mais pas ET
// Marche si il y a papa OU bebe dans la chaine
$result = mysql("$db","select * from essai where tri REGEXP \"papa|bebe\" " );
J'ai trouvé un autre truc avec LIKE qui marchait mais qui tenait compte de l'ordre des mots dans la chaine de départ.
ID 1 -> TRI 1 = "papa,maman,bebe"
ID 4 -> TRI 4 = "papa,bebe,maman"
ID 5 -> TRI 5 = "maman,bebe,papa"
la requette ne fonctionne que pour un seul de ces cas car les mots sont les memes mais pas l'ordre
HELP ME !