Une jointure avec le résultat de la requete [Réglé] [SQL] - SQL/NoSQL - Programmation
Marsh Posté le 16-07-2014 à 15:44:20
Tout simplement:
SELECT * |
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).
Marsh Posté le 16-07-2014 à 15:51:02
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 ?
Marsh Posté le 16-07-2014 à 16:08:59
Il veut surement dire les deux chiffres: 34 Herault, 69 Rhone... 2B Haute-Corse
Marsh Posté le 17-07-2014 à 09:47:29
Ben y'a déjà un champ "departement" contenant le nom du département
Marsh Posté le 17-07-2014 à 14:17:47
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
Marsh Posté le 17-07-2014 à 14:21:56
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
Marsh Posté le 17-07-2014 à 14:24:48
gpl73 a écrit : ruffo , pas très réveillé , ce matin lol |
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...
Marsh Posté le 17-07-2014 à 16:19:57
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
Marsh Posté le 03-01-2015 à 20:28:56
Bonjour,
Je ne vous avais pas remercié alors je me rattrapes, merci pour vos réponses ca m'a bien aidé
ps : oui je parlais bien des 2 chiffres de département 75 paris.
Marsh Posté le 16-07-2014 à 15:29:56
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)
$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