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 :

Sélection employé travaillant sur 2 projets + COUNT sans le GROUP BY [MySQL-5.6]


Sujet :

Requêtes MySQL

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 62
    Points : 38
    Points
    38
    Par défaut Sélection employé travaillant sur 2 projets + COUNT sans le GROUP BY
    Voici ma requête;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT  E.idEmploye ,(SELECT COUNT(idProjet) FROM RessourcesProjet 
     Where E.idEmploye = idEmploye) AS nbrProjet From Employe E;
    Le Resultat;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    iDEmploye         nbrProjet                 
    1212 	                 1                        
    1876	                 2                        
    2231                  2
    4354 	                 1
    Resultat Voulu;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    iDEmploye         nbrProjet
     
    1876	                 2                        
    2231                  2

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Sur quel critère voulez vous filtrer les employés 1212 et 4354 ?

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 62
    Points : 38
    Points
    38
    Par défaut SUR les employes qui ont travaille sur plus de deux projet COUNT > 1
    SUR les employes qui ont travaille sur plus de deux projet COUNT > 1
    Mais je ne suis pas capable de faire le code qui me donne ce resultat.... Merci de votre Aide

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Alors, comme ceci :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT  
        idEmploye 
        , COUNT(*) AS nbrProjet
    FROM RessourcesProjet 
    GROUP BY idEmploye 
    HAVING COUNT(*) > 1

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 62
    Points : 38
    Points
    38
    Par défaut SANS groupe by
    Un gros merci pour ta reponse
    mais Je ne peu pas utiliser le GROUPE BY
    c'est la probleme... Ce serai facile avec le GROUPE BY

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    pourquoi ?

    Je trouve ca débile, bref :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select ...
    from ma_table a
    where 1 < (select count(*) from ma_table_2 b where a.id = b.id)

    Sinon même si dans cette sous-requete il n'y a pas de group by c'est implicitement la même chose, en moins performant qu'un group by + having.

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 62
    Points : 38
    Points
    38
    Par défaut CA MARCHE ENFIN

    C'EST pour Apprendre MYSQL ...
    J'ai un cours mysql debutant....
    en interdissant le groupe by nous cherchons plus pour avoir le resultat...
    Gros merci encore ...
    MYSQL est complexe ...


    Citation Envoyé par punkoff Voir le message
    pourquoi ?

    Je trouve ca débile, bref :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select ...
    from ma_table a
    where 1 < (select count(*) from ma_table_2 b where a.id = b.id)

    Sinon même si dans cette sous-requete il n'y a pas de group by c'est implicitement la même chose, en moins performant qu'un group by + having.

  8. #8
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Notez que même dans la requête de punkoff il y a un GROUP BY(), c'est juste qu'il est implicite.

    Si c'est un exercice, je pense que le but était plutôt de vous faire utiliser la clause EXISTS.

  9. #9
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2014
    Messages : 62
    Points : 38
    Points
    38
    Par défaut
    Je ne connait Pas le CLAUSE EXISTS ainsi que le punkoff mais je vais Chercher je te reviens sur cela

  10. #10
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 217
    Points : 218
    Points
    218
    Par défaut Petite question
    Bonjour à tous,
    désole de ressortir un vieux sujet mais j aurais quelques questions à propos de cet exercice.
    Pour obtenir le résultat recherché, sans utiliser le group by, la formulation doit être comme ceci ? car je n'obtiens pas le résultat voulu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT idEmploye , COUNT(*) AS nbrProjet
    FROM ressourcesProjet 
    where 1 < (select COUNT(*) from employe where idEmploye = idProjet ) ;
    Merci d'avance pour vos lumières.

  11. #11
    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 065
    Points
    19 065
    Par défaut
    Salut while.dede.

    L'exercice demande de simuler un "group by" sans celui-ci.
    Il n'est même pas nécessaire de passer par les deux tables pour simuler un "group by".
    Par contre, vous avez besoin de faire une jointure.

    Voici un exemple :
    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
    --------------
    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 `test`
    ( `id`    integer  unsigned  NOT NULL auto_increment primary key,
      `val`   char(06)           NOT NULL
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    INSERT INTO `test` (`val`) VALUES
      ('un'),('deux'), ('trois'),('deux'),('quatre'),('cinq'),('quatre')
    --------------
     
    --------------
    select * from `test`
    --------------
     
    +----+--------+
    | id | val    |
    +----+--------+
    |  1 | un     |
    |  2 | deux   |
    |  3 | trois  |
    |  4 | deux   |
    |  5 | quatre |
    |  6 | cinq   |
    |  7 | quatre |
    +----+--------+
    --------------
    select  distinct t1.val,
            (select count(*) from `test` as t2 where t2.val = t1.val) as nbre
      from  `test` as t1
    having  nbre > 1
    --------------
     
    +--------+------+
    | val    | nbre |
    +--------+------+
    | deux   |    2 |
    | quatre |    2 |
    +--------+------+
    --------------
    COMMIT
    --------------
     
    --------------
    SET AUTOCOMMIT = 1
    --------------
     
    Appuyez sur une touche pour continuer...
    Le distinct est nécessaire sinon il y aura duplication de l'identifiant.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  12. #12
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 217
    Points : 218
    Points
    218
    Par défaut
    Salut Artemus24,
    merci pour ton aide et pour ton exemple (ça aide beaucoup).
    Je vais appliquer tout cela sur mon exemple et je reviens vers toi pour te dire si j ai bien compris et que ça marche.

  13. #13
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Là encore, la requête d'Artemus effectue un GROUP BY implicite.

    Pour ne pas effectuer d'opération de regroupement, vous pouvez passer par un EXISTS ou faire une double jointure sur la table RessourcesProjet en vérifiant que les IdProjet sont différents

  14. #14
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 217
    Points : 218
    Points
    218
    Par défaut
    ReBonjour,
    Alors j ai essayé d'appliquer la méthode d'Artemus sur mon exemple,
    mais comme je suis pas très à l aise avec le sql j ai du mal comprendre et du coup faire n'importe quoi.

    t1 et t2 correspondent à quoi dans l exemple d'Artemus?
    Et quelle différence avec t1.val et t2.val, je comprends que c est en rapport avec les valeurs mais...

    on me donne quelques conseils :
    Vous pouvez utiliser la syntaxe SELECT x,y FROM ... WHERE y = (SELECT MAX(z) FROM ... WHERE ...).
    Vous ne devez pas utiliser un GROUP BY.
    Étant donné un identifiant de projet (idProjet), vous voulez trouver la valeur maximale de l’identifiant d’étape (idEtape).

  15. #15
    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 065
    Points
    19 065
    Par défaut
    Salut while.dede.

    Citation Envoyé par while.dede
    t1 et t2 correspondent à quoi dans l'exemple d'Artemus?
    T1 & T2 sont les alias des tables.
    La première table est la table mère et la seconde la table fille, celle qui est en jointure vis-à-vis de la table mère, et où vous désisez faire le regroupement.

    Citation Envoyé par while.dede
    quelle différence avec t1.val et t2.val
    Aucune différence.

    Citation Envoyé par while.dede
    Vous pouvez utiliser la syntaxe SELECT x,y FROM ... WHERE y = (SELECT MAX(z) FROM ... WHERE ...).
    Cet exemple est un peu différent puisque vous cherchez le maximum de la colonne "z".
    Ce qui manque dans cet exemple est la jointure que vous devez appliquer dans la sous-requête.

    Citation Envoyé par while.dede
    Étant donné un identifiant de projet (idProjet), vous voulez trouver la valeur maximale de l’identifiant d’étape (idEtape).
    Je suppose que ces deux colonnes appartiennent à la même table.
    Ce qui donne, toujours sans "group by" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select  * 
      from  mytable as t1
     where  t1.idEtape = (  select  max(t2.idEtape)
                              from  mytable as t2
                             where  t2.idProjet = t1.idProjet
                         );
    "select *" sélectionne la totalité de la ligne.
    L'identifiant de la table est composée de (idProjet ; idEtape).
    idEtape peut avoir les valeurs de 1 à N.
    Le but est d'extraire la ligne, pour un projet donné, sachant que idEtape est la plus grande valeur (le max).

    J'aimerai que l'énoncé de votre problème soit sans ambiguïté car récupérer un nombre de lignes sans utiliser un "group by", ce n'est pas exactement la même chose que récupérer le maximum d'une étape d'un projet.

    Prenez l'habitude de donner le descriptif de vos tables, un jeu d'essai et le résultat que vous attendez.

    Citation Envoyé par aieeeuuuuu
    Là encore, la requête d'Artemus effectue un GROUP BY implicite.
    N'est-ce pas ce qui est demandé dans le premier message, à savoir faire un regroupement, sans utiliser le "group by" et extraire le résultat de ce regroupement, entre autre le nombre de lignes.

    Citation Envoyé par aieeeuuuuu
    Pour ne pas effectuer d'opération de regroupement, vous pouvez passer par un EXISTS
    Ce n'est pas exactement la même chose puisque vous testez que son existence.
    Et comment fait-on si l'on désire récupérer le nombre de lignes ?

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  16. #16
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 217
    Points : 218
    Points
    218
    Par défaut
    Tout d abord merci de ton aide Artemus j imagine que cela doit être un peut barbant d'essayer d aider un débutant qui galère un peu, voir même beaucoup.
    J ai essayé d'appliquer ce que tu as fait en rajoutant le nom de la table mais j ai un code erreur comme quoi il ne reconnais pas la colonne idEtape ou t1.idEtape j'ai essayé les deux, dans la clause where. Pourquoi ou me suis je trompé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select  * 
      from  ressourcesProjet as t1
     where  t1.idEtape = (  select  max(t2.idEtape)
                              from  ressourcesProjet as t2
                             where  t2.idProjet = t1.idProjet
                         );

  17. #17
    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 065
    Points
    19 065
    Par défaut
    Salut while.dede.

    Avec le descriptif de vos tables, ce serait encore mieux.
    A priori, je ne vois pas d'erreur dans la requête.

    Est-ce que la colonne "idEtape" existe dans la table ressourceProjet ?
    Voici l'exemple avec deux tables "projet" et "ressource" :
    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
    --------------
    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 `projet`
    --------------
     
    --------------
    CREATE TABLE `projet`
    ( `idProjet`   integer  unsigned  NOT NULL auto_increment primary key,
      `nomProjet`  varchar(255)       NOT NULL
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    INSERT INTO `projet` (`nomProjet`) VALUES
      ('projet 1'),('projet 2'),('projet 3'),('projet 4'),('projet 5')
    --------------
     
    --------------
    select * from `projet`
    --------------
     
    +----------+-----------+
    | idProjet | nomProjet |
    +----------+-----------+
    |        1 | projet 1  |
    |        2 | projet 2  |
    |        3 | projet 3  |
    |        4 | projet 4  |
    |        5 | projet 5  |
    +----------+-----------+
    --------------
    DROP TABLE IF EXISTS `ressource`
    --------------
     
    --------------
    CREATE TABLE `ressource`
    ( `idProjet`  integer  unsigned  NOT NULL,
      `idEtape`   integer  unsigned  NOT NULL,
      `lib`       varchar(255)       NOT NULL,
      PRIMARY KEY (`idProjet`,`idEtape`),
      CONSTRAINT `FK_Projet` FOREIGN KEY (`idProjet`) REFERENCES `projet` (`idProjet`) ON DELETE CASCADE ON UPDATE CASCADE
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    INSERT INTO `ressource` (`idProjet`,`idEtape`,`lib`) VALUES
      (1, 1, 'etape 1-1'),(1, 2, 'etape 1-2'),(1, 3, 'etape 1-3'),
      (2, 1, 'etape 2-1'),(2, 2, 'etape 2-2'),(2, 3, 'etape 2-3'),(2, 4, 'etape 2-4'),(2, 5, 'etape 2-5'),
      (3, 1, 'etape 3-1'),(3, 2, 'etape 3-2'),(3, 3, 'etape 3-3'),(3, 4, 'etape 3-4'),(3, 5, 'etape 3-5'),(3, 6, 'etape 3-6'),
      (4, 1, 'etape 4-1'),(4, 2, 'etape 4-2'),
      (5, 1, 'etape 5-1'),(5, 2, 'etape 5-2'),(5, 3, 'etape 5-3'),(5, 4, 'etape 5-4')
    --------------
     
    --------------
    select * from `ressource`
    --------------
     
    +----------+---------+-----------+
    | idProjet | idEtape | lib       |
    +----------+---------+-----------+
    |        1 |       1 | etape 1-1 |
    |        1 |       2 | etape 1-2 |
    |        1 |       3 | etape 1-3 |
    |        2 |       1 | etape 2-1 |
    |        2 |       2 | etape 2-2 |
    |        2 |       3 | etape 2-3 |
    |        2 |       4 | etape 2-4 |
    |        2 |       5 | etape 2-5 |
    |        3 |       1 | etape 3-1 |
    |        3 |       2 | etape 3-2 |
    |        3 |       3 | etape 3-3 |
    |        3 |       4 | etape 3-4 |
    |        3 |       5 | etape 3-5 |
    |        3 |       6 | etape 3-6 |
    |        4 |       1 | etape 4-1 |
    |        4 |       2 | etape 4-2 |
    |        5 |       1 | etape 5-1 |
    |        5 |       2 | etape 5-2 |
    |        5 |       3 | etape 5-3 |
    |        5 |       4 | etape 5-4 |
    +----------+---------+-----------+
    --------------
    select      t2.nomProjet,
                t1.lib
     
          from  `ressource` as t1
     
    inner join  `projet`    as t2
            on  t2.idProjet = t1.iDprojet
     
         where  t1.idEtape = (  select  max(t3.idEtape)
                                  from  `ressource` as t3
                                 where  t3.idProjet = t1.idProjet
                             )
    --------------
     
    +-----------+-----------+
    | nomProjet | lib       |
    +-----------+-----------+
    | projet 1  | etape 1-3 |
    | projet 2  | etape 2-5 |
    | projet 3  | etape 3-6 |
    | projet 4  | etape 4-2 |
    | projet 5  | etape 5-4 |
    +-----------+-----------+
    --------------
    COMMIT
    --------------
     
    --------------
    SET AUTOCOMMIT = 1
    --------------
     
    Appuyez sur une touche pour continuer...
    Pour chaque projet, nous retrouvons bien la dernière étape, soit le maximum de ce qui est stocké dans la colonne "idEtape".

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  18. #18
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 217
    Points : 218
    Points
    218
    Par défaut
    oui oui idEtape existe bien dans la table ressourcesProjet.

    Voila j ai réessayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select  t2.idProjet
            t1.idEtape
      from  ressourcesProjet as t1
     where  t1.idEtape = (  select  max(t2.idEtape)
                              from  ressourcesProjet as t2
                             where  t2.idProjet = t1.idProjet
                         );
    Et maintenant j'obtient une autre erreur de syntaxe cette fois-ci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.idEtape
      from  ressourcesProjet as t1
     where  t1.idEtape = (  select  max(t2.i' at line 2
    pourtant je n ai pas ecrit t2.i mais bien t2.idEtape????

  19. #19
    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 065
    Points
    19 065
    Par défaut
    Salut while.dede.

    Il vous manque une virgule (ce qui est en rouge) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select  t2.idProjet,
            t1.idEtape
      from  ressourcesProjet as t1
     where  t1.idEtape = (  select  max(t2.idEtape)
                              from  ressourcesProjet as t2
                             where  t2.idProjet = t1.idProjet
                         );
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  20. #20
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 217
    Points : 218
    Points
    218
    Par défaut
    Okay oui en effet cette erreur n apparaît plus , elle a été remplacée par une autre que je ne comprend pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    select  t2.idProjet,
            t1.idEtape
      from  ressourcesProjet as t1
     where  t1.idEtape = (  select  max(t2.idEtape)
                              from  ressourcesProjet as t2
                             where  t2.idProjet = t1.idProjet
                         );
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ERROR 1054 (42S22): Unknown column 't2.idProjet' in 'field list'

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 8
    Dernier message: 05/05/2010, 17h46
  2. Travailler sur des projets à distance
    Par moha1984 dans le forum CV
    Réponses: 0
    Dernier message: 30/11/2009, 23h18
  3. Réponses: 8
    Dernier message: 17/07/2009, 10h30
  4. Travailler sur un projet déjà existant
    Par Niko_de_bordo dans le forum Eclipse C & C++
    Réponses: 0
    Dernier message: 25/06/2009, 16h35
  5. travailler sur un projet en 3 couches
    Par guitariste dans le forum Général Java
    Réponses: 4
    Dernier message: 05/05/2009, 09h45

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