Page 1 sur 1

Petit souci avec LIKE MySQL

Posté : 18 janv. 2011, 18:51
par moileraz
Bonjour,
dans une base de données j'ai ces 2 tables :

Code : Tout sélectionner

Table1 (dans lequel j'ai 150 id) id - produits 1 - Produit 1 2 - Produit 2 3 - Produit 3 4 - Produit 4 etc.... Table2 id - projet - id_produit_utilise 1 - Projet 1 - 1,21 2 - Projet 2 - 4,52,28,102 etc....

Lorsque j'effectue une recherche
SELECT FROM Table2 WHERE id_produit_utilise LIKE '%id_produit%';
par exemple si id_produit=1 le voudrai que la recherche m'affiche uniquement Projet 1 mais la ca me retourne aussi Projet 2 car il trouve 21.

J'ai essayé divers requêtes avec LIKE

Code : Tout sélectionner

WHERE `id_produit_utilise` LIKE '%,_$id_produit,%' WHERE `id_produit_utilise` LIKE '%,$id_produit,%' WHERE `id_produit_utilise` LIKE '%,$id_produit_,%' WHERE `id_produit_utilise` LIKE '%,_$id_produit_,%' WHERE `id_produit_utilise` LIKE '$id_produit%'
Avez vous une solution?

Merci d'avance

Re: Petit souci avec LIKE MySQL

Posté : 18 janv. 2011, 18:54
par stealth35
je dirai comme ca ducoup
WHERE `id_produit_utilise` = 'Projet $id_produit'

Re: Petit souci avec LIKE MySQL

Posté : 18 janv. 2011, 19:01
par moileraz
Salut,
Merci pour ta réponse mais le souci comme je peut avoir plusieurs données je ne peut pas utilisé =

Re: Petit souci avec LIKE MySQL

Posté : 18 janv. 2011, 19:05
par stealth35
Salut,
Merci pour ta réponse mais le souci comme je peut avoir plusieurs données je ne peut pas utilisé =
si t'as plusieurs projet 1 ca marchera, comment tu veux faire la différence sinon ?

Re: Petit souci avec LIKE MySQL

Posté : 18 janv. 2011, 19:13
par moileraz
Enfait comme dans mon champs id_produit_utilise je peut avoir un projet qui utilise plusieurs produits

Exemple:
Projet 1 - 1,24,38,50
Projet 2 - 6, 45,32,65
Projet 3 - 5,11,31
Projet 4 - 5,25,73
si je met WHERE id_produit_utilise='5' ca ne va rien me retourner.

Donc l'idée c'est d'effectué une requête exemple pour avoir les projets qui utilise le produit 5 ca doit me retourner Projet 3 et Projet 4.

Re: Petit souci avec LIKE MySQL

Posté : 18 janv. 2011, 19:17
par stealth35
ta table est mal conçu, il te faut une table de relation pour faire ca :

projet_produit
1 - 1
1 - 21
2 - 4
2 - 52
2 - 28
2 - 102
3 - 5
3 - 25
3 - 31
4 - 5
4 - 25
4 - 73

Re: Petit souci avec LIKE MySQL

Posté : 18 janv. 2011, 19:20
par popy
WHERE CONCAT(',', `id_produit_utilise`, ',') LIKE '%,$id_produit,%'
WHERE FIND_IN_SET($id_produit, id_produit_utilise)

Re: Petit souci avec LIKE MySQL

Posté : 18 janv. 2011, 19:32
par moileraz
Salut popy,
j'ai testé ta requête et cela fonctionne merci bcp

Re: Petit souci avec LIKE MySQL

Posté : 18 janv. 2011, 19:40
par devlop78
Oui il s'agit là d'un problème de modélisation (il faudrait 3 tables en tout, avec les deux principales en relation n:m à travers la troisième table), mais sinon tu peux enregistrer chaque id en séparant de la virgule, y compris pour le dernier. Et alors tu peux LIKE '%$mon_id,%'