Je suis entrain de travailler sur une table avec des pays et des villes.
Chaque ville a une population.
Comment sélectionner les 5 villes les plus peuplées de chaque pays en une requête.
Merci d'avance pour votre aide![]()
Je suis entrain de travailler sur une table avec des pays et des villes.
Chaque ville a une population.
Comment sélectionner les 5 villes les plus peuplées de chaque pays en une requête.
Merci d'avance pour votre aide![]()
bonjour,
Pour vous aidez, aidez nous d'abord http://www.developpez.net/forums/a69...gage-sql-lire/
![]()
tu n'a pas donné la structure de table ni le SGBD, mais tu peut s'aider de cette requête (avec mysql):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 select v.NomVille from Ville v Order By v.population desc limit 0,5
Pour compléter ma demande voici quelques informations complémentaires, j'aimerais effectuer cette requête sur une version de mysql 5.1.43.
Voici une base de données exemple pour mon cas:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 CREATE TABLE `villes` ( `id_pays` int(11) NOT NULL, `population` int(11) NOT NULL, `nom` varchar(255) NOT NULL, `id` int(11) NOT NULL auto_increment, PRIMARY KEY (`id`) ); -- -- Contenu de la table `villes` -- INSERT INTO `villes` (`id_pays`, `population`, `nom`, `id`) VALUES (1, 12312, 'ville1', 1), (2, 22312, 'ville2', 2); (1, 19312, 'ville3', 3), (2, 22712, 'ville4', 4); (1, 124412, 'ville5', 5), (1, 223312, 'ville6', 6); (1, 12992, 'ville7', 7), (2, 223782, 'ville8', 8); (2, 123112, 'ville9', 9), (2, 223132, 'ville10', 10); (2, 123162, 'ville11', 11), (1, 223111, 'ville12', 12);
Merci hazamor cepedant ma version de mysql répond qu'il n'est pas possible d'utiliser un LIMIT dans un sous-requête de type IN![]()
Le problème étant que mysql est super limité pour traiter ce genre de demande :s
Si vous arrivez à adapter certaine requête de cet article vous pourriez vous en sortir (en particulier l'exemple 2) :
http://sqlpro.developpez.com/article...clause-window/
essayez avec cette requête
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 SELECT pays, ville FROM ville v1 WHERE ville IN ( SELECT v2.ville FROM ville v2 WHERE v2.pays=v1.pays and 5<(select count(*) from ville v3 where v2.pays=v3.pays and v2.ville<>v3.ville and v3.population <v2.population))
Excusez moi, j'ai pas bien vu cette partie, donc la requête:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 select pays, ville from ville v1 where ville in ( select v2.ville from ville v2 where v2.pays=v1.pays order by population desc limit 0,5)
Partager