IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Faire la somme des champs groupés par identifiant


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Faire la somme des champs groupés par identifiant
    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 :

    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');
    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
    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

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Bon, ba en fait, c'était tout couillon, comme quoi, il faut réfléchir plus que seulement une heure avant de poster dans un forum.

    Pour ceux que ça intéresse, il suffisait de rajouter un "group by t.id_trajet" et dans le select, au-lieu de faire des simples l.nb_pers et l.nb_enfant, faire "SUM(l.nb_pers)" et "SUM(l.nb_enfant)".

    Apparemment, ça fonctionne.

    (La solution m'est soudainement apparue en lisant ça : http://sqlpro.developpez.com/cours/sqlaz/erreurs/#L9)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Somme des champs commencant par le même mot
    Par kemsy dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 29/10/2008, 18h47
  2. rave report (somme des champs par pages)
    Par mozcity dans le forum Composants VCL
    Réponses: 3
    Dernier message: 17/03/2006, 21h51
  3. somme des champs null
    Par s.rais dans le forum Access
    Réponses: 4
    Dernier message: 09/02/2006, 09h05
  4. Somme des champs ? existe t il une fonction ...
    Par dark_vidor dans le forum Langage SQL
    Réponses: 6
    Dernier message: 02/01/2006, 11h57
  5. Traitement des champs memo par DBGrid
    Par Sydaze dans le forum Bases de données
    Réponses: 4
    Dernier message: 18/04/2005, 09h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo