SELECT sur liaison entre 3 tables

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : SELECT sur liaison entre 3 tables

par Peyothe » 14 mai 2009, 19:46

Merci à toi Patriboom d'avoir pris le temps de me répondre.

Je fais le test dès que possible.

En tout cas j'ai une bonne piste pour ma réflexion.

Je vous tiens au courant pour la solution.

EDIT : OK ça marche parfaitement !! Un grand merci à toi et à la communauté

par Nagol » 14 mai 2009, 09:14

Essaie, tu nous-en des nouvelles.
oui parceque on

par Patriboom » 14 mai 2009, 06:38

Comme il me semble, tout gravite autour du PRO, alors partons de là.

Code : Tout sélectionner

SELECT * (tu feras ici la liste de champs pertinents, ici on va tous les metre pour faire court) FROM PROS as PRO LEFT JOIN rel_pros_Ville AS LienVille ON LienVille.id_pro = PRO.id_pro LEFT JOIN rel_pros_Metier AS LienMetier ON LienMetier.id_pro = PRO.id_pro LEFT JOIN Ville AS VILLES ON VILLES.id_ville = LienVille.id_ville LEFT JOIN Metiers AS METIERS ON METIERS.id_metier = LienMetier.ID_metier WHERE ... tu mets ici tes conditions.
Le truc, est que tu peux faire un lien via un table déjà liée.
Essaie, tu nous-en des nouvelles.

SELECT sur liaison entre 3 tables

par Peyothe » 13 mai 2009, 23:08

Bonjour,

Je développe un moteur de recherche sur mon projet en cours et je bloque à nouveau sur une requete SELECT lors de l'affichage.
Je cherche à afficher une liste de professionnels (table PROS) qui sont sélectionnes par rapport à leurs métiers (table METIERS) et leurs villes (table VILLES).
Mes tables sont construites comme cela :

Table METIERS
ID_metier
NOM_metier

Code : Tout sélectionner

CREATE TABLE `METIERS` ( `ID_metier` int(10) unsigned NOT NULL auto_increment, `NOM_metier` varchar(255) collate utf8_unicode_ci NOT NULL, PRIMARY KEY (`id_metier`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;

Table VILLES
ID_ville
NOM_ville

Code : Tout sélectionner

CREATE TABLE `villes` ( `ID_ville` int(10) unsigned NOT NULL auto_increment, `NOM_ville` varchar(255) collate utf8_unicode_ci NOT NULL, PRIMARY KEY (`ID_ville`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1
Table de relations PROS - METIERS
ID_relation
ID_pro
ID_metier

Code : Tout sélectionner

CREATE TABLE `rel_pros_metiers` ( `id_pro_metier` int(10) unsigned NOT NULL auto_increment, `id_pro` int(10) unsigned NOT NULL, `id_metier` int(10) unsigned NOT NULL, PRIMARY KEY (`id_pro_metier`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
Table de relations PROS - VILLES
ID_relation
ID_pro
ID_ville

Code : Tout sélectionner

CREATE TABLE `rel_pros_villes` ( `id_pro_ville` int(10) unsigned NOT NULL auto_increment, `id_pro` int(10) unsigned NOT NULL, `id_ville` int(10) unsigned NOT NULL, PRIMARY KEY (`id_pro_ville`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
Je souhaiterai mettre en place un SELECT qui pourrai, par exemple, extraire tous mes professionnels dans les villes 1 et 3 et qui font les metiers 2 et 4.
Je m'embrouille un peu au niveau des jointures et de la méthode pour une telle requette.

En espérant avoir été le plus clair possible.
Merci par avance de me mettre sur la piste.
Je travail avec MySQL 5.0.51b[/b]