Bonjour,
dans le cadre d'un de mes projets, je voudrai arriver à grouper les lignes renvoyé par la requête mais aussi faire la somme d'un des champs de ces lignes.
Bon, avec les tables, ça ira mieux :
aeroport_trajet :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 CREATE TABLE `aeroport_trajet` ( `id_chauffeur` int(11) NOT NULL, `id_vehicule` int(11) NOT NULL, `id_trajet` int(11) NOT NULL auto_increment, `id_lieu_depart` int(11) NOT NULL, `id_lieu_dest` int(11) NOT NULL, `date` datetime NOT NULL, `estValide` tinyint(1) NOT NULL, PRIMARY KEY (`id_trajet`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ; INSERT INTO `aeroport_trajet` (`id_chauffeur`, `id_vehicule`, `id_trajet`, `id_lieu_depart`, `id_lieu_dest`, `date`, `estValide`) VALUES (4, 2, 1, 3, 100, '2008-12-25 03:00:00', 1), (3, 2, 2, 3, 100, '2008-12-25 08:00:00', 1);
aeroport_ligne_resa :
aeroport_reservation :
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 CREATE TABLE `aeroport_ligne_resa` ( `id_ligne` int(11) NOT NULL auto_increment, `id_res` int(11) NOT NULL, `id_trajet` int(11) NOT NULL, `id_pt_rass` int(11) NOT NULL, `rassemblement` text collate utf8_unicode_ci NOT NULL, `info_vol` text collate utf8_unicode_ci NOT NULL, `nb_pers` int(11) NOT NULL, `nb_enfant` int(11) NOT NULL, `heure` time NOT NULL, PRIMARY KEY (`id_ligne`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; INSERT INTO `aeroport_ligne_resa` (`id_ligne`, `id_res`, `id_trajet`, `id_pt_rass`, `rassemblement`, `info_vol`, `nb_pers`, `nb_enfant`, `heure`) VALUES (1, 1, 1, 2, ' 0 ', 'vol vers paris de stuttgart', 1, 0, '03:00:00'), (2, 2, 2, 2, ' 0 ', 'g', 1, 0, '08:00:00'), (3, 3, 2, 1, 'dfg', 'sdfg', 1, 0, '08:00:00');
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 CREATE TABLE `aeroport_reservation` ( `id_res` int(11) NOT NULL auto_increment, `id_client` int(11) NOT NULL, `date` datetime NOT NULL, `commentaire` text collate utf8_unicode_ci NOT NULL, `estSimple` tinyint(4) NOT NULL, PRIMARY KEY (`id_res`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; INSERT INTO `aeroport_reservation` (`id_res`, `id_client`, `date`, `commentaire`, `estSimple`) VALUES (1, 1, '2008-12-12 13:48:16', '', 1), (2, 1, '2008-12-12 17:35:38', '', 1), (3, 1, '2008-12-12 17:35:46', '', 1);
Je travaille donc avec ces 3 tables, sachant que la table aeroport_ligne_resa fait le lien entre aeroport_trajet et aeroport_reservation.
Ma requête qui m'affiche tout en faisant les liens est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 SELECT t.id_trajet, t.id_lieu_dest, t.id_lieu_depart, DATE_FORMAT( t.date, '%d/%m/%Y %Hh%im' ) AS date, l.nb_pers, l.nb_enfant FROM aeroport_trajet t LEFT JOIN aeroport_ligne_resa l ON l.id_res LEFT JOIN aeroport_reservation r ON r.id_res WHERE DATE_FORMAT( t.date, '%d-%m-%Y' ) = '25-12-2008' AND t.id_lieu_dest = '100' AND t.id_lieu_depart = '3' AND l.id_res = r.id_res AND t.id_trajet = l.id_trajet AND t.estValide =1
Cette requête me sort 3 résultats (normal), avec 2 lignes qui ont le même id_trajet. Ce que je voudrai, c'est qu'à la place de ces 2 lignes, il n'y en ai qu'une avec, à la place de nb_pers et nb_enfant, la somme des 2 champs respectifs des 2 lignes.
Par exemple, avec ma requête, j'ai :
id_trajet id_lieu_dest id_lieu_depart date nb_pers nb_enfant
1 100 3 25/12/2008 03h00m 1 0
2 100 3 25/12/2008 08h00m 1 0
2 100 3 25/12/2008 08h00m 1 0
Moi, je voudrai arriver à :
id_trajet id_lieu_dest id_lieu_depart date nb_pers nb_enfant
1 100 3 25/12/2008 03h00m 1 0
2 100 3 25/12/2008 08h00m 2 0
Voilà, si quelqu'un aurai une idée![]()
Merci d'avance
Partager