Structure de requete compliquée HELP PLEASE - SQL/NoSQL - Programmation
Marsh Posté le 22-05-2006 à 20:05:32
SELECT * FROM TABLE WHERE
champ1 LIKE %$item1% AND champ1 LIKE %$item2% AND
champ2 LIKE %$item1% AND champ2 LIKE %$item2% OR
champ3 LIKE %$item1% AND champ3 LIKE %$item2%
...
ou puis-je ecrire...
SELECT * FROM TABLE WHERE
(champ1 LIKE %$item1% AND champ1 LIKE %$item2% AND champ2 LIKE %$item1% AND champ2 LIKE %$item2%)
OR
(champ1 LIKE %$item1% AND champ1 LIKE %$item2% AND champ3 LIKE %$item1% AND champ3 LIKE %$item2%)
...
???
Marsh Posté le 23-05-2006 à 10:26:52
Si j'ai bien compris ton besoin, ca devrait ressembler à quelque chose comme ça :
Code :
|
par contre autant de like c'est pas terrible pour les perfs, tu ne peux pas faire une équi-jointure ?
Marsh Posté le 23-05-2006 à 13:08:05
je vais y reflechir
effectivement ca ralentit
mais je code en PHP sur MySQL et tous les resultats sont issus de la même table...
Aurais tu un exemple d'equi jointure ?
Marsh Posté le 23-05-2006 à 13:58:24
a mon avis tu dois pouvoir t'en sortir sans jointure en rusant via des concats, un truc dans le genre:
Code :
|
gaffe à la façon d'écrire les concats selon ton sgbd
Marsh Posté le 23-05-2006 à 14:21:20
équi-jointure c'est du type champ1 = '$item1' mais si c'est pour faire de la recherche sur un libellé tu seras obligé d'utiliser des like.
le problème avec les like c'est que le sgbd déroule toute ta table en entier alors quand tu les enchaînes comme ça selon le nombre d'enregistrements que tu as sur ta table, ca peut vite devenir horrible au niveau des perfs.
Marsh Posté le 23-05-2006 à 17:59:50
ReplyMarsh Posté le 23-05-2006 à 23:13:51
dans ce cas là (si tu as des problèmes de perf), il faut revoir ta modélisation je pense.
Marsh Posté le 22-05-2006 à 19:59:01
je recherche deux items
item1
item2...
dans 3 champs
champ1
champ2
champ3...
je veux sortir les résultats qui contiennent les 2 items :
-- dans le champ1 obligatoirement
ET
-- dans le champ2 OU dans le champ 3
je suis pas sur de mon coup sur la structure de la requete
donc si j'ai :
champ1 ET aucun champ
OU
champ1 ET champ2
OU
champ1 ET champ3
OU
champ1 ET champ2 et champ3...
... qui contiennent ma recherche, je l'affiche
un bout de code suivra tout de suite après
Merci de votre aide
Message édité par erwan83 le 22-05-2006 à 20:16:21
---------------
http://www.ypikay.com