Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1362 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  mysql IN()

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

mysql IN()

n°2102405
wizopunker
FUCK ANARCHY!
Posté le 20-09-2011 à 12:18:00  profilanswer
 

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 :

Code :
  1. SELECT * FROM produits WHERE "5" IN (produits.document_id)


 
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 :D


---------------
| .:: www.wizopunk-art.com - Développement web ::. |
mood
Publicité
Posté le 20-09-2011 à 12:18:00  profilanswer
 

n°2102429
flo850
moi je
Posté le 20-09-2011 à 13:38:56  profilanswer
 

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)


---------------

n°2102451
rufo
Pas me confondre avec Lycos!
Posté le 20-09-2011 à 15:33:46  profilanswer
 

+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 :D )...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2102469
wizopunker
FUCK ANARCHY!
Posté le 20-09-2011 à 16:43:06  profilanswer
 

flo850 a écrit :

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)


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 :)


---------------
| .:: www.wizopunk-art.com - Développement web ::. |
n°2102471
wizopunker
FUCK ANARCHY!
Posté le 20-09-2011 à 16:43:41  profilanswer
 

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 :D )...


ouais, bien d'accord :D
Bon aller ça saoule, je vais mettre ça en place comme ça ça ira mieux à l'avenir!


---------------
| .:: www.wizopunk-art.com - Développement web ::. |
n°2102492
rufo
Pas me confondre avec Lycos!
Posté le 20-09-2011 à 17:47:21  profilanswer
 

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 ;)


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  mysql IN()

 

Sujets relatifs
reconstruire bases de données mysql et information_schemaPython-MySQL
[Ada][SGBD][Gnade][Mysql]Galère avec Gnade.MySQLquel framework pour un backoffice php/mysql en un min de temps ?
Comment me connecter sur le site de zloche.net avec mysql[PHP/MYSQL] Updater la valeur des radio dans une base [Résolu]
Recherche développeur php / mysql[MySQL] LOAD DATA IN FILE problème
MySql 4.0 - Imbrication de Select avec In() 
Plus de sujets relatifs à : mysql IN()


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR