Bonjour,

sur une base Mysql5

J'ai deux Tables : groupe et données :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
CREATE TABLE `groupes` (
  `id` int(11) DEFAULT NULL,
  `GR` varchar(250) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
 
 
 
CREATE TABLE `donnees` (
  `id` int(11) DEFAULT NULL,
  `Nom` varchar(250) DEFAULT NULL,
  `IdGr` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1

avec les données suivantes :

table groupes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
+------+--------+
| id   | GR     |
+------+--------+
|    1 | un     |
|    2 | deux   |
|    3 | trois  |
|    4 | quatre |
|    5 | cinq   |
+------+--------+
table donnees
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
+------+-------+------+
| id   | Nom   | IdGr |
+------+-------+------+
|    1 | aaaaa |    1 |
|    2 | bbb   |    2 |
|    3 | ccc   |    3 |
|    4 | ddd   |    4 |
|    5 | eee   |    5 |
|    6 | ff    |    1 |
|    7 | gg    |    2 |
|    8 | hh    |    3 |
|    9 | i     |    4 |
|   10 | jj    |    5 |
|   11 | kk    |    1 |
|   12 | ll    |    2 |
|   13 | m     |    3 |
|   14 | nn    |    4 |
|   15 | oo    |    5 |
|   16 | p     |    1 |
|   17 | q     |    2 |
|   18 | rr    |    3 |
|   19 | ss    |    4 |
|   20 | tt    |    5 |
|   21 | uu    |    1 |
|   22 | v     |    2 |
|   23 | w     |    3 |
|   24 | x     |    4 |
|   25 | y     |    5 |
|   26 | z     |    1 |
|   27 | A     |    2 |
|   28 | B     |    3 |
|   29 | C     |    4 |
|   30 | D     |    5 |
|   31 | z     |    1 |
|   32 | D     |    2 |
|   33 | E     |    3 |
|   34 | F     |    4 |
|   35 | G     |    1 |
|   36 | H     |    2 |
|   37 | I     |    1 |
+------+-------+------+

j'utilise la requête suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
select g.GR,d.idGr, d.Nom from donnees d left join groupes g on d.IdGr=g.id order by GR,Nom ASC;
la requête me retourne ce résultat
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
 
+--------+------+-------+
| GR     | idGr | Nom   |
+--------+------+-------+
| cinq   |    5 | D     |
| cinq   |    5 | eee   |
| cinq   |    5 | jj    |
| cinq   |    5 | oo    |
| cinq   |    5 | tt    |
| cinq   |    5 | y     |
| deux   |    2 | A     |
| deux   |    2 | bbb   |
| deux   |    2 | D     |
| deux   |    2 | gg    |
| deux   |    2 | H     |
| deux   |    2 | ll    |
| deux   |    2 | q     |
| deux   |    2 | v     |
| quatre |    4 | C     |
| quatre |    4 | ddd   |
| quatre |    4 | F     |
| quatre |    4 | i     |
| quatre |    4 | nn    |
| quatre |    4 | ss    |
| quatre |    4 | x     |
| trois  |    3 | B     |
| trois  |    3 | ccc   |
| trois  |    3 | E     |
| trois  |    3 | hh    |
| trois  |    3 | m     |
| trois  |    3 | rr    |
| trois  |    3 | w     |
| un     |    1 | aaaaa |
| un     |    1 | ff    |
| un     |    1 | G     |
| un     |    1 | I     |
| un     |    1 | kk    |
| un     |    1 | p     |
| un     |    1 | uu    |
| un     |    1 | z     |
| un     |    1 | z     |
+--------+------+-------+



je voudrais lister la table donnees et ne lister que 2 lignes par groupe
faire une sorte de LIMIT 2 mais dans chaque Groupe (donnees.idGr)

et obtenir le résultat suivant

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
 
+--------+------+-------+
| GR     | idGr | Nom   |
+--------+------+-------+
| cinq   |    5 | D     |
| cinq   |    5 | eee   |
| deux   |    2 | A     |
| deux   |    2 | bbb   |
| quatre |    4 | C     |
| quatre |    4 | ddd   |
| trois  |    3 | B     |
| trois  |    3 | ccc   |
| un     |    1 | aaaaa |
| un     |    1 | ff    |
+--------+------+-------+