Problème de type dans une requête SQL

Problème de type dans une requête SQL - SQL/NoSQL - Programmation

Marsh Posté le 05-07-2006 à 11:49:59    

Bonjour à tous :)  
 
Je développe un forum et cherche en ce moment à coder la fonction qui permet à l'utilisateur de distinguer les forums lus de ceux qu'il n'a pas encore lu
 
J'ai réfléchi et ai trouvé (tout seul comme un grand :whistle: ) la solution qui me paraît être la meilleure :
(dans mes exemples, 1 désigne l'id du membre en cours)
 
* Quand un visiteur visite un forum, on ajoute son id dans un champ f_read de la table forums (pareil pour les sujets)
-> Concrètement, ça donne :

Code :
  1. UPDATE forums SET f_read = f_read + ', 1' WHERE f_id = 3

-> Ce qui donnera à terme quelque chose du genre f_read = '123, 54, 1, 2, 48, 87987, 654'
(bien entendu, dès qu'un membre poste dans le forum, je vide ce champ :sarcastic: )
 
* Ensuite, pour lister les forums, on fait une condition qui regarde si l'id du membre est dans la liste :

Code :
  1. SELECT [...] CASE WHEN 1 IN (f_read) THEN '1' ELSE '0' END AS f_read

... et j'affiche mes belles icones lu / non lu ;)  
 
Seulement voilà, je fais directement appel au champ f_read dans ma requête (avec IN (f_read) ) et MySQL me renvoie toujours 0 même quand mon id est dans le champ :heink:  
 
Je pense que c'est parce qu'il interprète mon champ comme du texte (et l'entoure donc avec des guillemets) et non comme une "suite de nombres séparés par des virgules" ... :sweat:  
 
En effet, la requête suivante marche parfaitement :

Code :
  1. SELECT [...] CASE WHEN 1 IN (123, 54, 1, 2, 48, 87987, 654) THEN '1' ELSE '0' END AS f_read


 
Ce qu'il faudrait, c'est convertir le contenu du champ en un format ("suite de nombres" ) que MySQL comprendrait, mais je sèche... :sweat:  
 
Des idées ?


---------------
Viendez sur le Newbie-Project et essayez le Newbie-Directory (nouveau)
Reply

Marsh Posté le 05-07-2006 à 11:49:59   

Reply

Sujets relatifs:

Leave a Replay

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