Requête sur deux tables problème champ / chaine
3 messages
• Page 1 sur 1
-

julien__ - WRInaute occasionnel

- Messages: 362
- Inscription: 28 Déc 2006
Requête sur deux tables problème champ / chaine
Help!! je cherche mais rien à faire je trouve pas la solution
voilà c'est une requête sur deux tables, dans base1, il y a un champ avec une liste de numéros de produit séparés par des virgules, et dans l'autre, catalogue, avec le numéro de produit et le numéro de l'image du produit.
Le but c'est de récupéré tous les enregistrement de la table catalogue qui sont présent dans le champ produits de la base1
SELECT base1.produits,catalogue.refproduit,catalogue.imageproduit FROM base1 INNER JOIN catalogue ON catalogue.refproduit IN (base1.produits) LIMIT 300
Cette requête fonctionne pour tous les enregistrements qui ont un seul produit dans base1.produits (exactement égal), parce que les champs qui ont plusieurs produits dans base1.produits (exemple 2345,23467,3456,4567) ne marchent pas, IN ne fait pas son travail car dans la requête sql voit ça comme un champ, et non pas une chaine... Comment m'en sortir?
voilà c'est une requête sur deux tables, dans base1, il y a un champ avec une liste de numéros de produit séparés par des virgules, et dans l'autre, catalogue, avec le numéro de produit et le numéro de l'image du produit.
Le but c'est de récupéré tous les enregistrement de la table catalogue qui sont présent dans le champ produits de la base1
SELECT base1.produits,catalogue.refproduit,catalogue.imageproduit FROM base1 INNER JOIN catalogue ON catalogue.refproduit IN (base1.produits) LIMIT 300
Cette requête fonctionne pour tous les enregistrements qui ont un seul produit dans base1.produits (exactement égal), parce que les champs qui ont plusieurs produits dans base1.produits (exemple 2345,23467,3456,4567) ne marchent pas, IN ne fait pas son travail car dans la requête sql voit ça comme un champ, et non pas une chaine... Comment m'en sortir?
- jcaron
- WRInaute accro

- Messages: 2687
- Inscription: 13 Fév 2004
Re: Requête sur deux tables problème champ / chaine
La bonne solution c'est d'avoir une table intermédiaire pour faire la jointure entre les deux tables.
Genre:
base1: (id, autres champs)
catalogue: (id, autres champs)
table_de_jointure: (id_base1, id_catalogue)
Sinon avec mysql je ne crois pas que ce soit possible. Avec postgresql ça se fait sans problème avec = ANY(regexp_split_to_array(champ,delimiteur)) par exemple, mais je ne crois pas que l'équivalent existe sur mysql (et c'est de toutes façons généralement moins performant que la table intermédiaire si tu as les bons index là où il faut).
Jacques.
Genre:
base1: (id, autres champs)
catalogue: (id, autres champs)
table_de_jointure: (id_base1, id_catalogue)
Sinon avec mysql je ne crois pas que ce soit possible. Avec postgresql ça se fait sans problème avec = ANY(regexp_split_to_array(champ,delimiteur)) par exemple, mais je ne crois pas que l'équivalent existe sur mysql (et c'est de toutes façons généralement moins performant que la table intermédiaire si tu as les bons index là où il faut).
Jacques.
3 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- Problème de jointure entre deux tables requête SQL
- Problème avec requête SQL multiple (3 tables) et comptage
- Requete 2 tables
- Requête sur deux tables
- Requete SQL sur 2 tables
- [Résolu] PB requete SQL 3 tables + 2 count
- SQL Requête dans plusieurs tables
- [MySQL] Requête SELECT entre 3 tables liées
- Requête SQL pour connexion entre 3 tables liées..
- Requete de classement SQL sur trois tables avec SUM, COUNT..
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités
