Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/03/2011, 12h06   #1
Invité2
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Par défaut Requête MySql sur champ contenant des virgules

Bonjour,

J'ai une table 'page' avec un champ 'group_id' contenant une chaine "1,2,3".
Si je fais une requête :
Code :
1
2
 
Select * From page where group_id = 1
Bizarrement, cela fonctionne...

Si je fais une requête :
Code :
1
2
 
Select * From page where group_id = 2
Cela ne fonctionne pas et me semble normale.

je pourrait faire :
Code :
1
2
 
Select * From page where group_id like '%2%'
Mais cela me retournerait également les résultat pour les group_id = 12 et 22,et...

Existe t'il une fonction permettant de "d'analyser" un champ contenant des séparateurs svp ?

Merci.
  Envoyer un message privé Réponse avec citation 00
Vieux 02/03/2011, 13h47   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Notamment pour cette raison, dans une base de données relationnelles, un champ n'est pas censé contenir plusieurs valeurs.
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/03/2011, 13h49   #3
Invité2
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Oui mais comme je l'ai déjà vu en pratique... J'aimerais faire pareil

Code :
1
2
3
4
5
 
SELECT *
      FROM pages
      WHERE group_id
      REGEXP '[[:<:]]2[[:>:]]'
Mais j'aimerai faire cette requête :

Code :
1
2
3
4
5
6
7
 
SELECT * FROM pages P 
INNER JOIN groups G 
         ON P.REGEXP '[[:<:]]U.group_id[[:>:]]' = G.group_id
INNER JOIN users U 
         ON U.group_id = G.group_id 
WHERE U.user_id = 2
une idée ? Merci.

Je continue :

Code :
1
2
3
4
5
6
7
8
 
SELECT *
      FROM pages P
INNER JOIN groups G 
     ON FIND_IN_SET( G.group_id, P.group_id )
INNER JOIN users U 
     ON U.group_id = G.group_id
WHERE U.user_id = 2
On dirait que cela fonctionne...

Dernière modification par Invité2 ; 02/03/2011 à 14h12.
  Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h02.


 
 
 
 
Partenaires

Hébergement Web