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

Requêtes MySQL Discussion :

Requête imbriquée paramétrée


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Juillet 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Juillet 2006
    Messages : 133
    Points : 90
    Points
    90
    Par défaut Requête imbriquée paramétrée
    Bonjour,

    Je ne sais pas si mon titre est clair car je ne sais pas vraiment comment résoudre mon problème.
    Il est plutôt simple :

    T
    ID
    Réf
    Date
    Qté

    Je voudrais sortir
    Pour chaque ID, la somme des Qté de cette même table, dont la Date est > à ce même ID

    J'avais pensé à cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT T1.ID, TEMP.Q
    FROM T T1 INNER JOIN
    (SELECT T2.ID, SUM(Qté) AS Q FROM T T2 WHERE T2.Réf = T1.Réf AND T2.Date > T1.Réf GROUP BY T2.ID) Temp
    ON T1.ID = Temp.ID
    Mais évidemment dans Temp, T1 est inconnu.

    Comment puis-je résoudre mon problème ?

    Merci !

  2. #2
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 462
    Points : 19 449
    Points
    19 449
    Par défaut
    Salut gabvoir.

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    --------------
    SET AUTOCOMMIT = 0
    --------------
     
    --------------
    START TRANSACTION
    --------------
     
    --------------
    DROP DATABASE IF EXISTS `base`
    --------------
     
    --------------
    CREATE DATABASE `base`
            DEFAULT CHARACTER SET `latin1`
            DEFAULT COLLATE       `latin1_general_ci`
    --------------
     
    --------------
    DROP TABLE IF EXISTS `test`
    --------------
     
    --------------
    CREATE TABLE IF NOT EXISTS `test`
    ( `id`    integer unsigned not null auto_increment primary key,
      `ref`   varchar(255)     not null,
      `date`  date             not null,
      `qte`   integer unsigned not null
    ) engine=innoDB
      default charset=latin1 collate=latin1_general_ci
      row_format=compressed
    --------------
     
    --------------
    insert into `test` (`ref`,`date`,`qte`) values
      ('ref 1', '2016-06-01', 10),
      ('ref 1', '2016-06-02', 10),
      ('ref 1', '2016-06-03', 10),
      ('ref 1', '2016-06-04', 10),
      ('ref 1', '2016-06-05', 10),
      ('ref 1', '2016-06-06', 10),
     
      ('ref 2', '2016-06-01',  7),
      ('ref 2', '2016-06-02',  7),
      ('ref 2', '2016-06-02',  7),
      ('ref 2', '2016-06-03',  7),
      ('ref 2', '2016-06-03',  7),
      ('ref 2', '2016-06-04',  7)
    --------------
     
    --------------
    select * from test
    --------------
     
    +----+-------+------------+-----+
    | id | ref   | date       | qte |
    +----+-------+------------+-----+
    |  1 | ref 1 | 2016-06-01 |  10 |
    |  2 | ref 1 | 2016-06-02 |  10 |
    |  3 | ref 1 | 2016-06-03 |  10 |
    |  4 | ref 1 | 2016-06-04 |  10 |
    |  5 | ref 1 | 2016-06-05 |  10 |
    |  6 | ref 1 | 2016-06-06 |  10 |
    |  7 | ref 2 | 2016-06-01 |   7 |
    |  8 | ref 2 | 2016-06-02 |   7 |
    |  9 | ref 2 | 2016-06-02 |   7 |
    | 10 | ref 2 | 2016-06-03 |   7 |
    | 11 | ref 2 | 2016-06-03 |   7 |
    | 12 | ref 2 | 2016-06-04 |   7 |
    +----+-------+------------+-----+
    --------------
    select t1.id, t1.ref, t1.date, sum(t1.qte) as qte
    from       test as t1
    inner join test as t2
    on  t2.ref   = t1.ref
    and t2.date >= t1.date
     
    group by t1.id, t1.ref, t1.date
    order by t1.id, t1.ref, t1.date
    --------------
     
    +----+-------+------------+------+
    | id | ref   | date       | qte  |
    +----+-------+------------+------+
    |  1 | ref 1 | 2016-06-01 |   60 |
    |  2 | ref 1 | 2016-06-02 |   50 |
    |  3 | ref 1 | 2016-06-03 |   40 |
    |  4 | ref 1 | 2016-06-04 |   30 |
    |  5 | ref 1 | 2016-06-05 |   20 |
    |  6 | ref 1 | 2016-06-06 |   10 |
    |  7 | ref 2 | 2016-06-01 |   42 |
    |  8 | ref 2 | 2016-06-02 |   35 |
    |  9 | ref 2 | 2016-06-02 |   35 |
    | 10 | ref 2 | 2016-06-03 |   21 |
    | 11 | ref 2 | 2016-06-03 |   21 |
    | 12 | ref 2 | 2016-06-04 |    7 |
    +----+-------+------------+------+
    --------------
    COMMIT
    --------------
     
    --------------
    SET AUTOCOMMIT = 1
    --------------
     
     
    Appuyez sur une touche pour continuer...
    @+

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Juillet 2006
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Juillet 2006
    Messages : 133
    Points : 90
    Points
    90
    Par défaut
    Salut Artemus,

    Désolé du retard !
    Mais c'est nickel !
    Ca répond totalement à mon besoin !

    Merci !

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

Discussions similaires

  1. Requête imbriqué double paramètre
    Par leloup84 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/07/2013, 15h18
  2. Requêtes imbriquées-passage de paramètres
    Par Maglight dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/04/2007, 17h40
  3. Passage de paramètres dans une requête imbriquée
    Par DrakkoFR dans le forum Langage SQL
    Réponses: 2
    Dernier message: 07/02/2005, 12h46
  4. Pb requête imbriquée
    Par ddams dans le forum Requêtes
    Réponses: 11
    Dernier message: 20/04/2004, 12h13
  5. Requête imbriquée et indexes INTERBASE
    Par vadim dans le forum InterBase
    Réponses: 2
    Dernier message: 06/09/2002, 16h15

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