Comparer deux champs

Signaler
Messages postés
13
Date d'inscription
mercredi 18 avril 2007
Statut
Membre
Dernière intervention
3 février 2013
-
nhervagault
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
-
Bonjour,
est-il possible de comparer deux champ de base de donnée de telle manière que dans une requète mysql, on puisse prendre tous les enregistrements qui contiennent au moins le champ n°1 dans les autres champs:
explication:
le champ n°1 contient par exemple: noel
le champ n°2 contient par exemple: paques, juin, février
le champ n°3 contient par exemple: paques, noel, septembre

donc, il faudrait une requète qui n'affiche seulement le champ n°3 puisqu'il contient noel et pas le n°2.
merci

4 réponses

Messages postés
276
Date d'inscription
lundi 8 septembre 2008
Statut
Membre
Dernière intervention
15 avril 2013
2
Bonjour,

Si un champ contient plusieurs informations alors ta base de données ne respecte pas la première forme normale (atomicité des informations). Il faudrait commencer par revoir le MCD.
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
24
Salut,

Comme préciser plus haut, ta structure de base est mauvaise donc requetes pas performantes et maintenabilité difficile.

Alors pour repondre,
Il y a les operations sur les chaines UN SGBD n'est pas tres performant sur la manipulation de chaines.

Like '%NOEL%'  --> performance mauvaise.
Messages postés
13
Date d'inscription
mercredi 18 avril 2007
Statut
Membre
Dernière intervention
3 février 2013

J'ai trouvé une requète mais je ne sais pas comment faire, je m'explique:
la requète:
"SELECT * FROM base WHERE champ1 IN ('noel','février','mars')"
cette requète me sort tous les enregistrements qui contienne dans le champ1 soit noel, soit février ou soit mars, donc ca marche comme ca, mais, je suis obligé de comparer pas avec une liste comme celle là mais avec un autre champ, mais ca ne marche pas? j'ai fait la requète qui suit:
"SELECT * FROM base WHERE champ1 IN champ2"
mais ca ne marche pas, comment faire?
merci
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
24
SELECT * FROM base WHERE champ1 IN (select champ2 from table2 WHERE TOTO='TRUC')