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 complexe (pour moi)


Sujet :

Requêtes MySQL

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2017
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Requête complexe (pour moi)
    Bonjour à tous,
    Je requiers votre aide : apres de nombreux essais, je ne parviens pas à créer la requete dont j'ai besoin.

    Table Conteneur :
    IdConteneur
    NomConteneur

    Table Contenu :
    IdContenu
    IdConteneur

    Table Evenement :
    IdEvenement
    IdContenu
    NomEvenement
    TypeEvenement
    DateEvenement



    Un petit exemple valant mieux qu'un long discours:

    Conteneur 1 : 1; "ConteneurA"
    Conteneur 2 : 2; "ConteneurB"

    Contenu 1 : 1;1;
    Contenu 2 : 2;1;
    Contenu 3 : 3;2;
    Contenu 4 : 4;2;

    Evenement 1 : 1;1;"Création du 1"; INSERTION; 27/11/2017;
    Evenement 2 : 2;1;"Modification du 1 le 28"; MODIFICATION; 28/11/2017;
    Evenement 3 : 3;1;"Modification du 1 le 29"; MODIFICATION; 29/11/2017;
    Evenement 4 : 4;2;"Création du 2"; INSERTION; 26/11/2017;
    Evenement 5 : 5;3;"Création du 3"; INSERTION; 29/11/2017;
    Evenement 6 : 6;3;"Modification du 3"; MODIFICATION; 01/12/2017;
    Evenement 7 : 7;4;"Création du 4"; INSERTION; 27/11/2017;
    Evenement 8 : 8;4;"Modification du 4"; MODIFICATION; 02/12/2017;

    J'aimerais connaitre pour chaque contenu, quel est le dernier événement en date d'un certain type , pour un contenu donné et sortir un résultat avec :
    NomConteneur | IdContenu | DateEvenement | NomEvenement | TypeEvenement
    ConteneurA | 1 | 29/11/2017 | Modification du 1 le 29 | MODIFICATION
    ConteneurA | 2 | 26/11/2017 | Création du 2 | CREATION
    ConteneurB | 3 | 01/12/2017 | Modification du 3 | MODIFICATION
    ConteneurB | 4 | 02/12/2017 | Modification du 4 | MODIFICATION

    Je vous remercie d'avance pour votre aide !

  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 381
    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 381
    Points : 19 066
    Points
    19 066
    Par défaut
    Salut bmarlet.

    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
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    --------------
    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 `conteneur`
    --------------
     
    --------------
    CREATE TABLE `conteneur`
    ( `idConteneur`     INTEGER UNSIGNED  NOT NULL auto_increment PRIMARY KEY,
      `nomConteneur`    varchar(255)      NOT NULL
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    INSERT INTO `Conteneur` (`nomConteneur`) VALUES
      ('Contenueur A'),
      ('Contenueur B')
    --------------
     
    --------------
    select * from `Conteneur`
    --------------
     
    +-------------+--------------+
    | idConteneur | nomConteneur |
    +-------------+--------------+
    |           1 | Contenueur A |
    |           2 | Contenueur B |
    +-------------+--------------+
    --------------
    DROP TABLE IF EXISTS `Contenu`
    --------------
     
    --------------
    CREATE TABLE `Contenu`
    ( `idContenu`     INTEGER UNSIGNED  NOT NULL auto_increment PRIMARY KEY,
      `idConteneur`   INTEGER UNSIGNED  NOT NULL,
      CONSTRAINT `FK_01` FOREIGN KEY (`idConteneur`) REFERENCES `Conteneur` (`idConteneur`) ON DELETE CASCADE ON UPDATE CASCADE
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    INSERT INTO `Contenu` (`idConteneur`) VALUES
      (1),(1),(2),(2)
    --------------
     
    --------------
    select * from `contenu`
    --------------
     
    +-----------+-------------+
    | idContenu | idConteneur |
    +-----------+-------------+
    |         1 |           1 |
    |         2 |           1 |
    |         3 |           2 |
    |         4 |           2 |
    +-----------+-------------+
    --------------
    DROP TABLE IF EXISTS `Evenement`
    --------------
     
    --------------
    CREATE TABLE `Evenement`
    ( `idEvenement`     INTEGER UNSIGNED  NOT NULL auto_increment PRIMARY KEY,
      `idContenu`       INTEGER UNSIGNED  NOT NULL,
      `nomEvenement`    varchar(255)      NOT NULL,
      `typeEvenement`   varchar(255)      NOT NULL,
      `dateEvenement`   date              NOT NULL,
      CONSTRAINT `FK_02` FOREIGN KEY (`idContenu`) REFERENCES `Contenu` (`idContenu`) ON DELETE CASCADE ON UPDATE CASCADE
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    INSERT INTO `Evenement` (`idContenu`,`nomEvenement`,`typeEvenement`,`dateEvenement`) VALUES
      (1, 'Création du 1',           'INSERTION',    '2017-11-27'),
      (1, 'Modification du 1 le 28', 'MODIFICATION', '2017-11-28'),
      (1, 'Modification du 1 le 29', 'MODIFICATION', '2017-11-29'),
      (2, 'Création du 2',           'INSERTION',    '2017-11-26'),
      (3, 'Création du 3',           'INSERTION',    '2017-11-29'),
      (3, 'Modification du 3',       'MODIFICATION', '2017-12-01'),
      (4, 'Création du 4',           'INSERTION',    '2017-11-27'),
      (4, 'Modification du 4',       'MODIFICATION', '2017-12-02')
    --------------
     
    --------------
    select * from `Evenement`
    --------------
     
    +-------------+-----------+-------------------------+---------------+---------------+
    | idEvenement | idContenu | nomEvenement            | typeEvenement | dateEvenement |
    +-------------+-----------+-------------------------+---------------+---------------+
    |           1 |         1 | Création du 1           | INSERTION     | 2017-11-27    |
    |           2 |         1 | Modification du 1 le 28 | MODIFICATION  | 2017-11-28    |
    |           3 |         1 | Modification du 1 le 29 | MODIFICATION  | 2017-11-29    |
    |           4 |         2 | Création du 2           | INSERTION     | 2017-11-26    |
    |           5 |         3 | Création du 3           | INSERTION     | 2017-11-29    |
    |           6 |         3 | Modification du 3       | MODIFICATION  | 2017-12-01    |
    |           7 |         4 | Création du 4           | INSERTION     | 2017-11-27    |
    |           8 |         4 | Modification du 4       | MODIFICATION  | 2017-12-02    |
    +-------------+-----------+-------------------------+---------------+---------------+
    --------------
    select      t3.nomConteneur,
                t2.idContenu,
                t1.dateEvenement,
                t1.nomEvenement,
                t1.typeEvenement
     
          from  `evenement`    as t1
     
    inner join  `contenu`      as t2
            on  t2.idContenu   = t1.idContenu
     
    inner join  `conteneur`    as t3
            on  t3.idConteneur = t2.idConteneur
     
    where t1.dateEvenement = (select  max(dateEvenement)
                                from  `Evenement` as t4
                               where  t4.idcontenu = t2.idContenu
                             )
    --------------
     
    +--------------+-----------+---------------+-------------------------+---------------+
    | nomConteneur | idContenu | dateEvenement | nomEvenement            | typeEvenement |
    +--------------+-----------+---------------+-------------------------+---------------+
    | Contenueur A |         1 | 2017-11-29    | Modification du 1 le 29 | MODIFICATION  |
    | Contenueur A |         2 | 2017-11-26    | Création du 2           | INSERTION     |
    | Contenueur B |         3 | 2017-12-01    | Modification du 3       | MODIFICATION  |
    | Contenueur B |         4 | 2017-12-02    | Modification du 4       | MODIFICATION  |
    +--------------+-----------+---------------+-------------------------+---------------+
    --------------
    COMMIT
    --------------
     
    --------------
    SET AUTOCOMMIT = 1
    --------------
     
    Appuyez sur une touche pour continuer...
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

Discussions similaires

  1. Requête trop complexe pour moi
    Par dauhik dans le forum Requêtes
    Réponses: 10
    Dernier message: 12/11/2012, 13h57
  2. requête un peu complexe pour moi
    Par remrem59 dans le forum Requêtes
    Réponses: 5
    Dernier message: 04/07/2011, 17h07
  3. Requête trop complexe pour moi
    Par snips67 dans le forum Requêtes
    Réponses: 6
    Dernier message: 27/01/2010, 09h24
  4. Une requête trop complexe pour moi
    Par prgasp77 dans le forum Langage SQL
    Réponses: 13
    Dernier message: 14/01/2009, 17h12
  5. requête un peu complexe pour moi (delete + distinct + max)
    Par mdr_cedrick dans le forum Langage SQL
    Réponses: 3
    Dernier message: 04/08/2008, 12h38

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