SQL
Résolu/Fermé
DAG
-
3 sept. 2008 à 12:05
Christounet Messages postés 1264 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 29 juillet 2010 - 3 sept. 2008 à 17:17
Christounet Messages postés 1264 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 29 juillet 2010 - 3 sept. 2008 à 17:17
A voir également:
- SQL
- Sql server recovery - Télécharger - Gestion de données
- Logiciel sql - Télécharger - Bases de données
- Sql pix - Forum Python
- Dupliquer une table sql ✓ - Forum Programmation
- Sql commence par ✓ - Forum Webmastering
7 réponses
Christounet
Messages postés
1264
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 388
3 sept. 2008 à 14:06
3 sept. 2008 à 14:06
Bonjour,
Le code suivant devrait faire ce que tu veux (je ne l'ai pas testé)
A toi de voir et tiens moi au courant
A plus
Le code suivant devrait faire ce que tu veux (je ne l'ai pas testé)
$statementDepOne = " SELECT Utilisateur.ID , Utilisateur.prenom_OD, Utilisateur.nom_OD, Utilisateur.date_naissance_OD, Utilisateur.departement_OD, Utilisateur.code_postal_OD , (SELECT nom_dep FROM departements WHERE num = LEFT(Utilisateur.code_postal,2)) FROM ouvrant_droit as Utilisateur;";
A toi de voir et tiens moi au courant
A plus
Christounet
Messages postés
1264
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 388
3 sept. 2008 à 15:13
3 sept. 2008 à 15:13
Bonjour,
Ta solution est correcte également, quand à la question de performance, tout dépend si tu as un index sur la colonne NUM de ta table département.
A plus
Ta solution est correcte également, quand à la question de performance, tout dépend si tu as un index sur la colonne NUM de ta table département.
A plus
Christounet
Messages postés
1264
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 388
3 sept. 2008 à 15:57
3 sept. 2008 à 15:57
Bonjour,
Tu peux diminuer le nombre de fois que la table Departement est lue en rajoutant un ORDER BY CODE_POSTAL dans le SELECT sur ta table ouvrant_droit. Il te faut aussi déclarer deux nouvelles variables ANCIEN_CODE et NOUVEAU_CODE initialisés avec des blancs.
Pour chaque record lu dans ta table ouvrant_droit (mysql_fetch_array($reqDepOne)), tu assigne une valeur à la variable NOUVEAU_CODE étant égale au deux premiers caractères du code postal. Tu compares ensuite ANCIEN_CODE avec NOUVEAU_CODE, en cas de différence tu lis ta table département avec le NOUVEAU_CODE, ensuite tu mets la variable ANCIEN_CODE égale à la variable NOUVEAU_CODE.
A plus
Tu peux diminuer le nombre de fois que la table Departement est lue en rajoutant un ORDER BY CODE_POSTAL dans le SELECT sur ta table ouvrant_droit. Il te faut aussi déclarer deux nouvelles variables ANCIEN_CODE et NOUVEAU_CODE initialisés avec des blancs.
Pour chaque record lu dans ta table ouvrant_droit (mysql_fetch_array($reqDepOne)), tu assigne une valeur à la variable NOUVEAU_CODE étant égale au deux premiers caractères du code postal. Tu compares ensuite ANCIEN_CODE avec NOUVEAU_CODE, en cas de différence tu lis ta table département avec le NOUVEAU_CODE, ensuite tu mets la variable ANCIEN_CODE égale à la variable NOUVEAU_CODE.
A plus
Christounet
Messages postés
1264
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 388
3 sept. 2008 à 17:17
3 sept. 2008 à 17:17
Bonjour,
De rien, n'oublies pas de mettre ton post comme résolu.
A plus
De rien, n'oublies pas de mettre ton post comme résolu.
A plus
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci beaucoup !
En fait j'ai eu le temps de faire autrement. Je le fais en plusieurs requêtes... Je pense que c'est moins performant, mais bon... Je suis un peu sous pression et je n'est pas trop le temps de faire mieux !
En fait j'ai eu le temps de faire autrement. Je le fais en plusieurs requêtes... Je pense que c'est moins performant, mais bon... Je suis un peu sous pression et je n'est pas trop le temps de faire mieux !
function departement() { include '../bdd/connexion_bdd.php'; $statementDepOne = "SELECT nom_OD, prenom_OD, date_naissance_OD, code_postal_OD FROM ouvrant_droit;"; $reqDepOne = mysql_query($statementDepOne) or die('<br>Erreur base de donnée !<br>' . $statementDepOne . '<br>'.mysql_error()); echo $statementDepOne . "<br>"; while($data = mysql_fetch_array($reqDepOne)) { echo $data[nom_OD] . "<br>"; echo $data[prenom_OD] . "<br>"; echo $data[date_naissance_OD] . "<br>"; echo $data[code_postal_OD] . "<br>"; echo substr($data[code_postal_OD], 0, 2) . "<br>"; $statementDepTwo = "SELECT nom_dep FROM departements WHERE num = '" . substr($data[code_postal_OD], 0, 2) ."';"; $reqDepTwo = mysql_query($statementDepTwo) or die('<br>Erreur base de donnée !<br>' . $statementDepTwo . '<br>'.mysql_error()); echo $statementDepTwo . "<br>"; while($dataTwo = mysql_fetch_array($reqDepTwo)) { echo $dataTwo[nom_dep] . "<br>"; $statementDepThree = "UPDATE ouvrant_droit SET departement_OD = '" . str_replace("'","\'",$dataTwo[nom_dep]) . "' WHERE (nom_OD = '" . str_replace("'","\'",$data[nom_OD]) . "' AND prenom_OD = '" . str_replace("'","\'",$data[prenom_OD]) . "' AND date_naissance_OD = '" . $data[date_naissance_OD] . "');"; mysql_query($statementDepThree) or die('<br>Erreur base de donnée !<br>' . $statementDepThree . '<br>'.mysql_error()); echo $statementDepThree . "<br><br>"; } } }
Non je n'est pas d'index sur cette colonne. J'ai une autre colonne (ce sont les trois seule colonne de cette table) ID qui me sert d'index.