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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Réglé] [SQL] Une jointure avec le résultat de la requete

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Réglé] [SQL] Une jointure avec le résultat de la requete

n°2233455
tomware
Moteur à eau
Posté le 16-07-2014 à 15:29:56  profilanswer
 

Bonjour,
 
Voici ma question
 
J'ai 2 tables : membre et departement
 
Je veux afficher le nom du département a côté du pseudo du membre.
 
La table membre contient :  id | pseudo | code_postal
 
La table département contient : id | departement_code (les 2 numeros de département) | departement (nom du département)
 

Citation :

$sql = 'SELECT * FROM membre  WHERE actif = 1 ORDER BY id ';
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
while($data = mysql_fetch_array($req))
{
$code_postal = $data['code_postal'];
$pseudo = $data['pseudo'];
$numero_departement = substr($code_postal, 0, 2);
 
$sql2 = 'SELECT * FROM departement WHERE departement_code = "'.$numero_departement.'" ';
 
 $req2 = mysql_query($sql2) or die('Erreur SQL !<br>'.$sql2.'<br>'.mysql_error());
while($data2 = mysql_fetch_array($req2))
{
$nom_departement = $data2['departement'];
 }
   
   
echo "$pseudo - $nom_departement";
 
}


 
 
 
J'aimerai faire une jointure mais... le numéro de département du membre est dans le résultat de la premiere requête !
 
Auriez vous quelques pistes ?
 
Merci :)


Message édité par tomware le 03-01-2015 à 20:29:11
mood
Publicité
Posté le 16-07-2014 à 15:29:56  profilanswer
 

n°2233459
lasnoufle
La seule et unique!
Posté le 16-07-2014 à 15:44:20  profilanswer
 

Tout simplement:

SELECT *  
FROM membre m
JOIN departement d ON d.departement_code = SUBSTR(m.code_postal, 0, 2)
WHERE m.actif = 1  
ORDER BY m.id


Evidemment il faut remplacer SUBSTR(m.code_postal, 0, 2) par la fonction substring qui va bien selon ton SGBD, donc potentiellement le nom et les parametres ne seront pas les memes. Celui propose devrait marcher sous Oracle si je ne m'abuse (meme si les puristes utiliseraient SUBSTR(m.code_postal, 1, 2) pour le meme resultat).


---------------
C'était vraiment très intéressant.
n°2233460
rufo
Pas me confondre avec Lycos!
Posté le 16-07-2014 à 15:51:02  profilanswer
 

Normalement, dans la table membre, tu devrais avoir en clé étrangère l'id du département. Du coup, tu fais tout un une seule requête sql.
 
Edit : qu'est-ce que tu entends par "les 2 numeros de département" :??: A ma connaissance, un département n'a qu'un seul n°, non ?


Message édité par rufo le 16-07-2014 à 15:52:35

---------------
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°2233462
lasnoufle
La seule et unique!
Posté le 16-07-2014 à 16:08:59  profilanswer
 

Il veut surement dire les deux chiffres: 34 Herault, 69 Rhone... 2B Haute-Corse  [:ultra2:2]


---------------
C'était vraiment très intéressant.
n°2233498
rufo
Pas me confondre avec Lycos!
Posté le 17-07-2014 à 09:47:29  profilanswer
 

Ben y'a déjà un champ "departement" contenant le nom du département :/


---------------
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°2233530
gpl73
Posté le 17-07-2014 à 14:17:47  profilanswer
 

ruffo :), pas très réveillé , ce matin lol
tom veut le nom du département à coté du pseudo du membre ...
 
Attention les codes postes corses sont en 20000
Lasnoufle, ta jointure ne va pas marcher pour ceux-ci ...
 
Tom : Il te faut gérer ce cas dans la requête proposée par Lasnoufle :)
 
Guillaume


---------------
mieux vaut être un con au chaud, qu'un con gelé lol
n°2233531
ddr555
Posté le 17-07-2014 à 14:21:56  profilanswer
 

un bon décode des famille pour la corse
20100, 20300, 20500, 20700 et 20900 sont pour 2A et le reste pour 2B. c'est un peu chiant mais c'est faisable

n°2233532
rufo
Pas me confondre avec Lycos!
Posté le 17-07-2014 à 14:24:48  profilanswer
 

gpl73 a écrit :

ruffo :), pas très réveillé , ce matin lol
tom veut le nom du département à coté du pseudo du membre ...
 
Attention les codes postes corses sont en 20000
Lasnoufle, ta jointure ne va pas marcher pour ceux-ci ...
 
Tom : Il te faut gérer ce cas dans la requête proposée par Lasnoufle :)
 
Guillaume


Je parle de la définition de ta table "departement". Il met ceci :
"La table département contient : id | departement_code (les 2 numeros de département) | departement (nom du département)"
 
J'étais intrigué par ce qu'il entendait par "les 2 numeros de département" pour le champ "departement_code" (un département n'a quu'n seul n° à ma connaissance). Pour sa requête, j'avais bien compris ce qu'il voulait, d'où pourquoi je parlais de faire une jointure, quitte à modifier sa table membre pour y ajouter la clé étrangère id du département, ce qui serait plus propre que de faire des substr :/
 
Edit : et ma solution éviterait de se prendre la tête avec la Corse puisqu'on se base sur l'id et pas le code du département pour faire la jointure...


Message édité par rufo le 17-07-2014 à 14:26:28

---------------
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°2233566
gpl73
Posté le 17-07-2014 à 16:19:57  profilanswer
 

Ruffo, tu as raison... c'est le plus "propre".
 
Tom, si tu as ajoutes une colonne numéro du département,  
pendant que tu y es, penses à gérer les régions, les pays... car tu auras tôt ou tard un utilisateur qui va vouloir faire des regroupements là dessus (par exemple)...
 
Guillaume


---------------
mieux vaut être un con au chaud, qu'un con gelé lol
n°2247253
tomware
Moteur à eau
Posté le 03-01-2015 à 20:28:56  profilanswer
 

Bonjour,
 
Je ne vous avais pas remercié alors je me rattrapes, merci pour vos réponses ca m'a bien aidé :jap:  
 
ps : oui je parlais bien des 2 chiffres de département 75 paris.  ;)  
 


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

  [Réglé] [SQL] Une jointure avec le résultat de la requete

 

Sujets relatifs
SQL | Sélection sur le max d'une datevb et mysql, requête parametres
MySQL : aide pour une requêteRécuperer des lignes dans un ordre précis avec une seule requête
Oracle - Requête SQL outer joinCours ou tuto PL/SQL
MySQL : 1h pour une requête avec un NOT IN, conseils pour optimiser ?[SGBD/SQL] MàJ Utilisation CASE et Auto Join
[EXCEL 2010] Formule résultat cellule X en fonction de Y 
Plus de sujets relatifs à : [Réglé] [SQL] Une jointure avec le résultat de la requete


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