Le 16/12/2014 10:11, Damien Wyart a écrit :
mysql> SELECT * FROM villes;
+-------+---------------+
| insee | nom |
+-------+---------------+
| 02095 | BOHAIN |
| 02691 | SAINT QUENTIN |
| 02789 | VERVINS |
| 59122 | CAMBRAI |
| 59349 | LIGNY |
| 59392 | MAUBEUGE |
| 60159 | COMPIEGNE |
| 60175 | CREIL |
| 60612 | SENLIS |
| 62119 | BETHUNE |
| 62498 | LENS |
| 80261 | DURY |
| 80620 | PERONNE |
| 80685 | ROYE |
| 97304 | KOUROU |
| 97419 | SAINTE ROSE |
+-------+---------------+
mysql> SELECT * FROM dept;
+--------+---------------+----------+
| numero | nom | pref |
+--------+---------------+----------+
| 02 | AISNE | LAON |
| 59 | NORD | LILLE |
| 60 | OISE | BEAUVAIS |
| 62 | PAS DE CALAIS | ARRAS |
| 80 | SOMME | AMIENS |
| 973 | GUYANNE | CAYENNE |
| 974 | REUNION | ST DENIS |
+--------+---------------+----------+
mysql> SELECT villes.nom, pref FROM villes, dept WHERE (LEFT(insee, 2)
<> "97" AND LEFT(insee, 2) = numero) OR (LEFT(insee, 2) = "97" AND
LEFT(insee,3) = numero) ORDER BY nom;
+---------------+----------+
| nom | pref |
+---------------+----------+
| BETHUNE | ARRAS |
| BOHAIN | LAON |
| CAMBRAI | LILLE |
| COMPIEGNE | BEAUVAIS |
| CREIL | BEAUVAIS |
| DURY | AMIENS |
| KOUROU | CAYENNE |
| LENS | ARRAS |
| LIGNY | LILLE |
| MAUBEUGE | LILLE |
| PERONNE | AMIENS |
| ROYE | AMIENS |
| SAINT QUENTIN | LAON |
| SAINTE ROSE | ST DENIS |
| SENLIS | BEAUVAIS |
| VERVINS | LAON |
+---------------+----------+
ce n'est pas ce qui a été posé comme question dans la question c'est le
code INSEE de la prefecture qui est dans la table dept
- Villes :
vi_Code_insee
vi_Nom
- Departements :
dp_Numero
dp_Nom
dp_Code_insee_préfecture
vous n'avez donc pas répondu à la question
mysql> SELECT * FROM villes;
+-------+---------------+
| insee | nom |
+-------+---------------+
| 02095 | BOHAIN |
| 02408 | LAON |
| 02691 | SAINT QUENTIN |
| 02789 | VERVINS |
| 59122 | CAMBRAI |
| 59349 | LIGNY |
| 59350 | LILLE |
| 59392 | MAUBEUGE |
| 60057 | BEAUVAIS |
| 60159 | COMPIEGNE |
| 60175 | CREIL |
| 60612 | SENLIS |
| 62041 | ARRAS |
| 62119 | BETHUNE |
| 62498 | LENS |
| 80021 | AMIENS |
| 80261 | DURY |
| 80620 | PERONNE |
| 80685 | ROYE |
| 97302 | CAYENNE |
| 97304 | KOUROU |
+-------+---------------+
mysql> SELECT * FROM dept;
+--------+---------------+----------+
| numero | nom | pref |
+--------+---------------+----------+
| 02 | AISNE | 02408 |
| 59 | NORD | 59350 |
| 60 | OISE | 60057 |
| 62 | PAS DE CALAIS | 62041 |
| 80 | SOMME | 80021 |
| 973 | GUYANNE | 97302 |
+--------+---------------+----------+
+---------------+----------+
| nom | pref |
+---------------+----------+
| AMIENS | AMIENS |
| ARRAS | ARRAS |
| BEAUVAIS | BEAUVAIS |
| BETHUNE | ARRAS |
| BOHAIN | LAON |
| CAMBRAI | LILLE |
| COMPIEGNE | BEAUVAIS |
| CREIL | BEAUVAIS |
| CAYENNE | CAYENNE |
| DURY | AMIENS |
| KOUROU | CAYENNE |
| LAON | LAON |
| LENS | ARRAS |
| LIGNY | LILLE |
| LILLE | LILLE |
| MAUBEUGE | LILLE |
| PERONNE | AMIENS |
| ROYE | AMIENS |
| SAINT QUENTIN | LAON |
| SAINTE ROSE | ST DENIS |
| SENLIS | BEAUVAIS |
| VERVINS | LAON |
+---------------+----------+
Le 16/12/2014 10:11, Damien Wyart a écrit :
mysql> SELECT * FROM villes;
+-------+---------------+
| insee | nom |
+-------+---------------+
| 02095 | BOHAIN |
| 02691 | SAINT QUENTIN |
| 02789 | VERVINS |
| 59122 | CAMBRAI |
| 59349 | LIGNY |
| 59392 | MAUBEUGE |
| 60159 | COMPIEGNE |
| 60175 | CREIL |
| 60612 | SENLIS |
| 62119 | BETHUNE |
| 62498 | LENS |
| 80261 | DURY |
| 80620 | PERONNE |
| 80685 | ROYE |
| 97304 | KOUROU |
| 97419 | SAINTE ROSE |
+-------+---------------+
mysql> SELECT * FROM dept;
+--------+---------------+----------+
| numero | nom | pref |
+--------+---------------+----------+
| 02 | AISNE | LAON |
| 59 | NORD | LILLE |
| 60 | OISE | BEAUVAIS |
| 62 | PAS DE CALAIS | ARRAS |
| 80 | SOMME | AMIENS |
| 973 | GUYANNE | CAYENNE |
| 974 | REUNION | ST DENIS |
+--------+---------------+----------+
mysql> SELECT villes.nom, pref FROM villes, dept WHERE (LEFT(insee, 2)
<> "97" AND LEFT(insee, 2) = numero) OR (LEFT(insee, 2) = "97" AND
LEFT(insee,3) = numero) ORDER BY nom;
+---------------+----------+
| nom | pref |
+---------------+----------+
| BETHUNE | ARRAS |
| BOHAIN | LAON |
| CAMBRAI | LILLE |
| COMPIEGNE | BEAUVAIS |
| CREIL | BEAUVAIS |
| DURY | AMIENS |
| KOUROU | CAYENNE |
| LENS | ARRAS |
| LIGNY | LILLE |
| MAUBEUGE | LILLE |
| PERONNE | AMIENS |
| ROYE | AMIENS |
| SAINT QUENTIN | LAON |
| SAINTE ROSE | ST DENIS |
| SENLIS | BEAUVAIS |
| VERVINS | LAON |
+---------------+----------+
ce n'est pas ce qui a été posé comme question dans la question c'est le
code INSEE de la prefecture qui est dans la table dept
- Villes :
vi_Code_insee
vi_Nom
- Departements :
dp_Numero
dp_Nom
dp_Code_insee_préfecture
vous n'avez donc pas répondu à la question
mysql> SELECT * FROM villes;
+-------+---------------+
| insee | nom |
+-------+---------------+
| 02095 | BOHAIN |
| 02408 | LAON |
| 02691 | SAINT QUENTIN |
| 02789 | VERVINS |
| 59122 | CAMBRAI |
| 59349 | LIGNY |
| 59350 | LILLE |
| 59392 | MAUBEUGE |
| 60057 | BEAUVAIS |
| 60159 | COMPIEGNE |
| 60175 | CREIL |
| 60612 | SENLIS |
| 62041 | ARRAS |
| 62119 | BETHUNE |
| 62498 | LENS |
| 80021 | AMIENS |
| 80261 | DURY |
| 80620 | PERONNE |
| 80685 | ROYE |
| 97302 | CAYENNE |
| 97304 | KOUROU |
+-------+---------------+
mysql> SELECT * FROM dept;
+--------+---------------+----------+
| numero | nom | pref |
+--------+---------------+----------+
| 02 | AISNE | 02408 |
| 59 | NORD | 59350 |
| 60 | OISE | 60057 |
| 62 | PAS DE CALAIS | 62041 |
| 80 | SOMME | 80021 |
| 973 | GUYANNE | 97302 |
+--------+---------------+----------+
+---------------+----------+
| nom | pref |
+---------------+----------+
| AMIENS | AMIENS |
| ARRAS | ARRAS |
| BEAUVAIS | BEAUVAIS |
| BETHUNE | ARRAS |
| BOHAIN | LAON |
| CAMBRAI | LILLE |
| COMPIEGNE | BEAUVAIS |
| CREIL | BEAUVAIS |
| CAYENNE | CAYENNE |
| DURY | AMIENS |
| KOUROU | CAYENNE |
| LAON | LAON |
| LENS | ARRAS |
| LIGNY | LILLE |
| LILLE | LILLE |
| MAUBEUGE | LILLE |
| PERONNE | AMIENS |
| ROYE | AMIENS |
| SAINT QUENTIN | LAON |
| SAINTE ROSE | ST DENIS |
| SENLIS | BEAUVAIS |
| VERVINS | LAON |
+---------------+----------+
Le 16/12/2014 10:11, Damien Wyart a écrit :
mysql> SELECT * FROM villes;
+-------+---------------+
| insee | nom |
+-------+---------------+
| 02095 | BOHAIN |
| 02691 | SAINT QUENTIN |
| 02789 | VERVINS |
| 59122 | CAMBRAI |
| 59349 | LIGNY |
| 59392 | MAUBEUGE |
| 60159 | COMPIEGNE |
| 60175 | CREIL |
| 60612 | SENLIS |
| 62119 | BETHUNE |
| 62498 | LENS |
| 80261 | DURY |
| 80620 | PERONNE |
| 80685 | ROYE |
| 97304 | KOUROU |
| 97419 | SAINTE ROSE |
+-------+---------------+
mysql> SELECT * FROM dept;
+--------+---------------+----------+
| numero | nom | pref |
+--------+---------------+----------+
| 02 | AISNE | LAON |
| 59 | NORD | LILLE |
| 60 | OISE | BEAUVAIS |
| 62 | PAS DE CALAIS | ARRAS |
| 80 | SOMME | AMIENS |
| 973 | GUYANNE | CAYENNE |
| 974 | REUNION | ST DENIS |
+--------+---------------+----------+
mysql> SELECT villes.nom, pref FROM villes, dept WHERE (LEFT(insee, 2)
<> "97" AND LEFT(insee, 2) = numero) OR (LEFT(insee, 2) = "97" AND
LEFT(insee,3) = numero) ORDER BY nom;
+---------------+----------+
| nom | pref |
+---------------+----------+
| BETHUNE | ARRAS |
| BOHAIN | LAON |
| CAMBRAI | LILLE |
| COMPIEGNE | BEAUVAIS |
| CREIL | BEAUVAIS |
| DURY | AMIENS |
| KOUROU | CAYENNE |
| LENS | ARRAS |
| LIGNY | LILLE |
| MAUBEUGE | LILLE |
| PERONNE | AMIENS |
| ROYE | AMIENS |
| SAINT QUENTIN | LAON |
| SAINTE ROSE | ST DENIS |
| SENLIS | BEAUVAIS |
| VERVINS | LAON |
+---------------+----------+
ce n'est pas ce qui a été posé comme question dans la question c'est le
code INSEE de la prefecture qui est dans la table dept
- Villes :
vi_Code_insee
vi_Nom
- Departements :
dp_Numero
dp_Nom
dp_Code_insee_préfecture
vous n'avez donc pas répondu à la question
mysql> SELECT * FROM villes;
+-------+---------------+
| insee | nom |
+-------+---------------+
| 02095 | BOHAIN |
| 02408 | LAON |
| 02691 | SAINT QUENTIN |
| 02789 | VERVINS |
| 59122 | CAMBRAI |
| 59349 | LIGNY |
| 59350 | LILLE |
| 59392 | MAUBEUGE |
| 60057 | BEAUVAIS |
| 60159 | COMPIEGNE |
| 60175 | CREIL |
| 60612 | SENLIS |
| 62041 | ARRAS |
| 62119 | BETHUNE |
| 62498 | LENS |
| 80021 | AMIENS |
| 80261 | DURY |
| 80620 | PERONNE |
| 80685 | ROYE |
| 97302 | CAYENNE |
| 97304 | KOUROU |
+-------+---------------+
mysql> SELECT * FROM dept;
+--------+---------------+----------+
| numero | nom | pref |
+--------+---------------+----------+
| 02 | AISNE | 02408 |
| 59 | NORD | 59350 |
| 60 | OISE | 60057 |
| 62 | PAS DE CALAIS | 62041 |
| 80 | SOMME | 80021 |
| 973 | GUYANNE | 97302 |
+--------+---------------+----------+
+---------------+----------+
| nom | pref |
+---------------+----------+
| AMIENS | AMIENS |
| ARRAS | ARRAS |
| BEAUVAIS | BEAUVAIS |
| BETHUNE | ARRAS |
| BOHAIN | LAON |
| CAMBRAI | LILLE |
| COMPIEGNE | BEAUVAIS |
| CREIL | BEAUVAIS |
| CAYENNE | CAYENNE |
| DURY | AMIENS |
| KOUROU | CAYENNE |
| LAON | LAON |
| LENS | ARRAS |
| LIGNY | LILLE |
| LILLE | LILLE |
| MAUBEUGE | LILLE |
| PERONNE | AMIENS |
| ROYE | AMIENS |
| SAINT QUENTIN | LAON |
| SAINTE ROSE | ST DENIS |
| SENLIS | BEAUVAIS |
| VERVINS | LAON |
+---------------+----------+
ce n'est pas ce qui a été posé comme question dans la question c'est
le code INSEE de la prefecture qui est dans la table dept
ce n'est pas ce qui a été posé comme question dans la question c'est
le code INSEE de la prefecture qui est dans la table dept
ce n'est pas ce qui a été posé comme question dans la question c'est
le code INSEE de la prefecture qui est dans la table dept
Extrait de l'entête des messages publiés des "deux (un)" protagoniste(s) :
NNTP-Posting-Host: 88.175.144.136Vous en tirerez les conclusions...
Bien vu, merci !
Vu l'état du fil je vais quand même poster une solution courte en SQL,
ça peut toujours servir à d'autres qui parcoureront les acrhives...
Parce que là, on a un peu l'impression d'après certaines réponses que
c'est un problème difficile alors que c'est élémentaire...
Extrait de l'entête des messages publiés des "deux (un)" protagoniste(s) :
NNTP-Posting-Host: 88.175.144.136
Vous en tirerez les conclusions...
Bien vu, merci !
Vu l'état du fil je vais quand même poster une solution courte en SQL,
ça peut toujours servir à d'autres qui parcoureront les acrhives...
Parce que là, on a un peu l'impression d'après certaines réponses que
c'est un problème difficile alors que c'est élémentaire...
Extrait de l'entête des messages publiés des "deux (un)" protagoniste(s) :
NNTP-Posting-Host: 88.175.144.136Vous en tirerez les conclusions...
Bien vu, merci !
Vu l'état du fil je vais quand même poster une solution courte en SQL,
ça peut toujours servir à d'autres qui parcoureront les acrhives...
Parce que là, on a un peu l'impression d'après certaines réponses que
c'est un problème difficile alors que c'est élémentaire...
quel est le temps d'excution de la requête?
autrement une chose me semble étrange dans le résultat SQL c'est que
un tri par ordre alphabétique des préfecture s'est mysterieusement
fait pourles villes homonyme comme ABANCOURT alors qu'elle aurais du
rester dans l'ordre INSEE ce qui sent le bidouillage du résultat en
effet comment une requête peut faire un tri qui n'y figure pas ?
quel est le temps d'excution de la requête?
autrement une chose me semble étrange dans le résultat SQL c'est que
un tri par ordre alphabétique des préfecture s'est mysterieusement
fait pourles villes homonyme comme ABANCOURT alors qu'elle aurais du
rester dans l'ordre INSEE ce qui sent le bidouillage du résultat en
effet comment une requête peut faire un tri qui n'y figure pas ?
quel est le temps d'excution de la requête?
autrement une chose me semble étrange dans le résultat SQL c'est que
un tri par ordre alphabétique des préfecture s'est mysterieusement
fait pourles villes homonyme comme ABANCOURT alors qu'elle aurais du
rester dans l'ordre INSEE ce qui sent le bidouillage du résultat en
effet comment une requête peut faire un tri qui n'y figure pas ?
Le 16-12-2014, JKB nous expliquait dans
fr.comp.applications.sgbd
() :
On t'avait pourtant expliqué qu'il ne fallait pas invoquer le diable /o
Le 16-12-2014, JKB nous expliquait dans
fr.comp.applications.sgbd
(<slrnm90f22.8ld.jkb@rayleigh.systella.fr>) :
On t'avait pourtant expliqué qu'il ne fallait pas invoquer le diable /o
Le 16-12-2014, JKB nous expliquait dans
fr.comp.applications.sgbd
() :
On t'avait pourtant expliqué qu'il ne fallait pas invoquer le diable /o
c'est justement le fait qu'il ne doit pas y avoir de tri et qu'il y en
a un qui rends les choses suspectes
c'est justement le fait qu'il ne doit pas y avoir de tri et qu'il y en
a un qui rends les choses suspectes
c'est justement le fait qu'il ne doit pas y avoir de tri et qu'il y en
a un qui rends les choses suspectes
mysql> SELECT villes.nom, (SELECT nom FROM villes WHERE pref = insee)
AS pref FROM villes, dept WHERE (LEFT(insee, 2) <> "97" AND
LEFT(insee, 2) = numero) OR (LEFT(insee, 2) = "97" AND LEFT(insee,3) > numero) ORDER BY nom, insee LIMIT 10;
+----------------------+------------+
| nom | pref |
+----------------------+------------+
| AAST | PAU |
| ABAINVILLE | BAR-LE-DUC |
| ABANCOURT | LILLE |
| ABANCOURT | BEAUVAIS |
| ABAUCOURT | NANCY |
| ABAUCOURT-HAUTECOURT | BAR-LE-DUC |
| ABBANS-DESSOUS | BESANCON |
| ABBANS-DESSUS | BESANCON |
| ABBARETZ | NANTES |
| ABBECOURT | LAON |
+----------------------+------------+
mysql> SELECT villes.nom, (SELECT nom FROM villes WHERE pref = insee)
AS pref FROM villes, dept WHERE (LEFT(insee, 2) <> "97" AND
LEFT(insee, 2) = numero) OR (LEFT(insee, 2) = "97" AND LEFT(insee,3) > numero) ORDER BY nom, insee LIMIT 10;
+----------------------+------------+
| nom | pref |
+----------------------+------------+
| AAST | PAU |
| ABAINVILLE | BAR-LE-DUC |
| ABANCOURT | LILLE |
| ABANCOURT | BEAUVAIS |
| ABAUCOURT | NANCY |
| ABAUCOURT-HAUTECOURT | BAR-LE-DUC |
| ABBANS-DESSOUS | BESANCON |
| ABBANS-DESSUS | BESANCON |
| ABBARETZ | NANTES |
| ABBECOURT | LAON |
+----------------------+------------+
mysql> SELECT villes.nom, (SELECT nom FROM villes WHERE pref = insee)
AS pref FROM villes, dept WHERE (LEFT(insee, 2) <> "97" AND
LEFT(insee, 2) = numero) OR (LEFT(insee, 2) = "97" AND LEFT(insee,3) > numero) ORDER BY nom, insee LIMIT 10;
+----------------------+------------+
| nom | pref |
+----------------------+------------+
| AAST | PAU |
| ABAINVILLE | BAR-LE-DUC |
| ABANCOURT | LILLE |
| ABANCOURT | BEAUVAIS |
| ABAUCOURT | NANCY |
| ABAUCOURT-HAUTECOURT | BAR-LE-DUC |
| ABBANS-DESSOUS | BESANCON |
| ABBANS-DESSUS | BESANCON |
| ABBARETZ | NANTES |
| ABBECOURT | LAON |
+----------------------+------------+
mysql> SELECT villes.nom_v, prefs.nom_v FROM villes, (SELECT numero,
nom_v FROM dept, villes WHERE pref = insee) AS prefs WHERE
(LEFT(villes.insee, 2) <> "97" AND LEFT(villes.insee, 2) > numero) OR (LEFT(villes.insee, 2) = "97" AND
LEFT(villes.insee,3) = numero) ORDER BY villes.nom_v,
villes.insee LIMIT 10;
+----------------------+------------+
| nom_v | nom_v |
+----------------------+------------+
| AAST | PAU |
| ABAINVILLE | BAR-LE-DUC |
| ABANCOURT | LILLE |
| ABANCOURT | BEAUVAIS |
| ABAUCOURT | NANCY |
| ABAUCOURT-HAUTECOURT | BAR-LE-DUC |
| ABBANS-DESSOUS | BESANCON |
| ABBANS-DESSUS | BESANCON |
| ABBARETZ | NANTES |
| ABBECOURT | LAON |
+----------------------+------------+
mysql> SELECT villes.nom_v, prefs.nom_v FROM villes, (SELECT numero,
nom_v FROM dept, villes WHERE pref = insee) AS prefs WHERE
(LEFT(villes.insee, 2) <> "97" AND LEFT(villes.insee, 2) > numero) OR (LEFT(villes.insee, 2) = "97" AND
LEFT(villes.insee,3) = numero) ORDER BY villes.nom_v,
villes.insee LIMIT 10;
+----------------------+------------+
| nom_v | nom_v |
+----------------------+------------+
| AAST | PAU |
| ABAINVILLE | BAR-LE-DUC |
| ABANCOURT | LILLE |
| ABANCOURT | BEAUVAIS |
| ABAUCOURT | NANCY |
| ABAUCOURT-HAUTECOURT | BAR-LE-DUC |
| ABBANS-DESSOUS | BESANCON |
| ABBANS-DESSUS | BESANCON |
| ABBARETZ | NANTES |
| ABBECOURT | LAON |
+----------------------+------------+
mysql> SELECT villes.nom_v, prefs.nom_v FROM villes, (SELECT numero,
nom_v FROM dept, villes WHERE pref = insee) AS prefs WHERE
(LEFT(villes.insee, 2) <> "97" AND LEFT(villes.insee, 2) > numero) OR (LEFT(villes.insee, 2) = "97" AND
LEFT(villes.insee,3) = numero) ORDER BY villes.nom_v,
villes.insee LIMIT 10;
+----------------------+------------+
| nom_v | nom_v |
+----------------------+------------+
| AAST | PAU |
| ABAINVILLE | BAR-LE-DUC |
| ABANCOURT | LILLE |
| ABANCOURT | BEAUVAIS |
| ABAUCOURT | NANCY |
| ABAUCOURT-HAUTECOURT | BAR-LE-DUC |
| ABBANS-DESSOUS | BESANCON |
| ABBANS-DESSUS | BESANCON |
| ABBARETZ | NANTES |
| ABBECOURT | LAON |
+----------------------+------------+
En activant le profiling dans MySQL (set profiling=1; show profiles;),
j'obtiens des temps de l'ordre de quelques millisecondes. Je n'ai pas
mis en place d'optimisation particulière (aucun index n'a été créé).
[...]
Cette forme est également plus rapide car elle n'effectue pas le
SELECT imbriqué pour chaque ville (même si les optimisations internes
font que ma requête avec imbrication dans le SELECT restait quand même
rapide d'un point de vue utilisateur). En mode profiling, j'obtiens
des temps d'exécution de l'ordre de quelques dizaines de
micro-secondes pour cette imbrication au niveau du FROM.
En activant le profiling dans MySQL (set profiling=1; show profiles;),
j'obtiens des temps de l'ordre de quelques millisecondes. Je n'ai pas
mis en place d'optimisation particulière (aucun index n'a été créé).
[...]
Cette forme est également plus rapide car elle n'effectue pas le
SELECT imbriqué pour chaque ville (même si les optimisations internes
font que ma requête avec imbrication dans le SELECT restait quand même
rapide d'un point de vue utilisateur). En mode profiling, j'obtiens
des temps d'exécution de l'ordre de quelques dizaines de
micro-secondes pour cette imbrication au niveau du FROM.
En activant le profiling dans MySQL (set profiling=1; show profiles;),
j'obtiens des temps de l'ordre de quelques millisecondes. Je n'ai pas
mis en place d'optimisation particulière (aucun index n'a été créé).
[...]
Cette forme est également plus rapide car elle n'effectue pas le
SELECT imbriqué pour chaque ville (même si les optimisations internes
font que ma requête avec imbrication dans le SELECT restait quand même
rapide d'un point de vue utilisateur). En mode profiling, j'obtiens
des temps d'exécution de l'ordre de quelques dizaines de
micro-secondes pour cette imbrication au niveau du FROM.