mysql IN() - SQL/NoSQL - Programmation
Marsh Posté le 20-09-2011 à 13:38:56
ta structure de base de données est pas top ( et je suis gentil )
Est ce que tu ne peux pas avoir une table produits_document(produit_id,document_id) ?
Sinon, la méthode simple est de rechercher avec des expressions régulières , mais c'est moche .
Sinon IN s'utilise plutot comme ça :
SELECT * FROM produits WHERE produits.document_id IN (5,8 , 23, 214)
Marsh Posté le 20-09-2011 à 15:33:46
+1 pour le pb de modélisation. T'es typiquement dans le cas d'une relation 1..n et cette relation n'est pas modélisé correctement dans ta BD, d'où ton pb... En général, avec une BD bien modélisée, les requêtes s'écrivent assez facilement (quand on se débrouille un minium en SQL, of course )...
Marsh Posté le 20-09-2011 à 16:43:06
flo850 a écrit : ta structure de base de données est pas top ( et je suis gentil ) |
Bon pour l'instant je m'en suis sortit avec un regexp, mais c'est vrai que c'est du bricolage. Je suis d'accord sur mon problème de modélisation. Bon là ça va que c'est une partie qui n'est pas publique, et du coup il n'y a pas de traffic là dessus. Il a été décidé de le laisser comme ça pour l'instant
Mais sinon oui, il faudrait que je fasse ça correctement la prochaine fois.. Merci pour la réponse
Marsh Posté le 20-09-2011 à 16:43:41
rufo a écrit : +1 pour le pb de modélisation. T'es typiquement dans le cas d'une relation 1..n et cette relation n'est pas modélisé correctement dans ta BD, d'où ton pb... En général, avec une BD bien modélisée, les requêtes s'écrivent assez facilement (quand on se débrouille un minium en SQL, of course )... |
ouais, bien d'accord
Bon aller ça saoule, je vais mettre ça en place comme ça ça ira mieux à l'avenir!
Marsh Posté le 20-09-2011 à 17:47:21
T'as tout à fait raison de remettre ça d'équerre si t'en a la possibilité. C'est perdre un peu de temps, là, pour en gagner par la suite
Marsh Posté le 20-09-2011 à 12:18:00
Bonjour,
Je me cogne sur un petit problème en ce moment.
J'ai une table "produits", avec (entre autre) une colonne "document_id", écrite sous la forme de "id1, id2, [...] , id3" (par exemple "6,5,3,2,4". A coté, j'ai une table documents, avec des id bien entendu.
J'aurai sans doute du faire une table intermédiaire pour assigner les documents aux produits, mais bon, maintenant c'est fait.
Ma question : je comptais utiliser la fonction "IN()" pour récupérer les produits à partir d'une id de document :
bon, ça marche pas (aucun retour), donc évidemment je dois rêver un peu sur le fonctionnement de IN. Mais je voulais une confirmation comme quoi je fais de la merde, parce que toutes les docs que je retrouve ont l'air de présenter IN() de cette manière..
Du coup, sinon, une idée comme obtenir ce dont j'ai besoin autrement? Genre une regexp par exemple?
Merci bien en tout cas
---------------
| .:: www.wizopunk-art.com - Développement web ::. |