Comparer deux champs

pascb423 Messages postés 13 Date d'inscription mercredi 18 avril 2007 Statut Membre Dernière intervention 3 février 2013 - 16 déc. 2008 à 08:48
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 - 16 déc. 2008 à 15:09
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

ed73 Messages postés 276 Date d'inscription lundi 8 septembre 2008 Statut Membre Dernière intervention 15 avril 2013 2
16 déc. 2008 à 10:58
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.
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
16 déc. 2008 à 11:42
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.
0
pascb423 Messages postés 13 Date d'inscription mercredi 18 avril 2007 Statut Membre Dernière intervention 3 février 2013
16 déc. 2008 à 13:14
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
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
16 déc. 2008 à 15:09
SELECT * FROM base WHERE champ1 IN (select champ2 from table2 WHERE TOTO='TRUC')
0
Rejoignez-nous