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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Structure de requete compliquée HELP PLEASE

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Structure de requete compliquée HELP PLEASE

n°1372507
erwan83
Du Shift DEL tu te méfieras !
Posté le 22-05-2006 à 19:59:01  profilanswer
 

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
mood
Publicité
Posté le 22-05-2006 à 19:59:01  profilanswer
 

n°1372508
erwan83
Du Shift DEL tu te méfieras !
Posté le 22-05-2006 à 20:05:32  profilanswer
 

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%)
 
...
???
 


---------------
http://www.ypikay.com
n°1372853
moonboot
Posté le 23-05-2006 à 10:26:52  profilanswer
 

Si j'ai bien compris ton besoin, ca devrait ressembler à quelque chose comme ça :
 

Code :
  1. select *
  2. from table
  3. where
  4. exists (select 1
  5.  from table
  6.  where champ1 like '%$item1%')
  7. and exists (select 1
  8.  from table
  9.  where champ1 like '%$item2%')
  10. and exists (select 1
  11.  from table
  12.  where champ2 like '%$item1%'
  13.  or    champ3 like '%$item1%')
  14. and exists (select 1
  15.  from table
  16.  where champ2 like '%$item2%'
  17.  or    champ3 like '%$item2%')

 
 
par contre autant de like c'est pas terrible pour les perfs, tu ne peux pas faire une équi-jointure ?

n°1373101
erwan83
Du Shift DEL tu te méfieras !
Posté le 23-05-2006 à 13:08:05  profilanswer
 

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 ?


---------------
http://www.ypikay.com
n°1373143
anapajari
s/travail/glanding on hfr/gs;
Posté le 23-05-2006 à 13:58:24  profilanswer
 

a mon avis tu dois pouvoir t'en sortir sans jointure en rusant via des concats, un truc dans le genre:

Code :
  1. select
  2. *
  3. from
  4. tatable
  5. where
  6. ';'||champs1||';'||champs2||';'||champs3||';' like '%;item1;%'
  7. AND
  8. ';'||champs1||';'||champs2||';'||champs3||';' like '%;item2;%'


gaffe à la façon d'écrire les concats selon ton sgbd

n°1373174
moonboot
Posté le 23-05-2006 à 14:21:20  profilanswer
 

é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.

n°1373426
erwan83
Du Shift DEL tu te méfieras !
Posté le 23-05-2006 à 17:59:50  profilanswer
 

oui oui voila effectivement le probleme que je me pose


---------------
http://www.ypikay.com
n°1373665
moonboot
Posté le 23-05-2006 à 23:13:51  profilanswer
 

dans ce cas là (si tu as des problèmes de perf), il faut revoir ta modélisation je pense.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Structure de requete compliquée HELP PLEASE

 

Sujets relatifs
[JAVA Débutant] JPanel, JFrame et Paint() --> Help :(Correction requete
[MySQL] Problème de requête- Help / Excel & VB -
Problème requête PHPRequète Access qui marche en local et pas à travers le réseau.
[VB]Enregistrer le résultat d'une requête dans un fichier txt[SQL] Requête pour récupérer le classement d'un championnat [Résolu]
probleme sur une requete SQL[SQL] Une requete de division
Plus de sujets relatifs à : Structure de requete compliquée HELP PLEASE


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