REQUETTE DE TRI

REQUETTE DE TRI - PHP - Programmation

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 !

Reply

Marsh Posté le 04-12-2002 à 15:44:24   

Reply

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 ?

Reply

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?

Reply

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)

Reply

Marsh Posté le 04-12-2002 à 15:57:46    

omega2 a écrit a écrit :

sortir une tronsoneuse pour couper une feuille de papier.



 :lol:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed