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 :

Jointure un poil complexe


Sujet :

Requêtes MySQL

  1. #1
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 224
    Points
    20 224
    Par défaut Jointure un poil complexe
    Bonjour à tous,
    Je suis face à un petit problème sur une de mes requetes.

    J'ai une table nommé "tache" qui contient une liste de tache a laquelle est notemment relié un utilisateur.

    J'ai logiquement une table "user" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    User
    +----+-------------+----------------+---------------+--------+------------+----------+
    | id | login       | pass           | email         | groupe | nom        | prenom   |
    +----+-------------+----------------+---------------+--------+------------+----------+
    tache
    +----+-------------+----------------+---------------+--------+------------+----------+
    | id | date_ask    | demandeur      | client        | user   | descrip| etat     |
    +----+-------------+----------------+---------------+--------+------------+----------+
    Jusque là tout va bien.
    On m'a ensuite demander la possibilité de relié plusieurs utilisateur à une même taches , tout en étant diffirents de l'utilisateur principal.

    j'ai donc créer une table tache_assoc pour faire le lien entre tout ce petit monde :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    tache_assoc
    +----+---------+----------+
    | id | id_user | id_tache |
    +----+---------+----------+
    Mon souçis actuellement est que j'arrive bien à tout récupérer avec la requete suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT t.id, date_ask, valid_teb, valid_pry, demandeur, c.label AS client, date_limit, description, etat, remarque, p.label AS label, v.label AS version, nom, prenom, ta.id_user AS lier
    FROM tache t
    INNER JOIN user u ON t.user = u.id
    INNER JOIN projet p ON t.projet = p.id
    LEFT JOIN projet_version v ON t.version = v.id
    LEFT JOIN client c ON t.client = c.id
    LEFT JOIN tache_assoc ta ON ta.id_tache = t.id
    WHERE date_limit >= '2008-01-01'
    AND date_limit <= '2008-12-31'
    ORDER BY date_limit DESC
    LIMIT 0 , 30
    Mais je n'arrive pas à remplacer l'id des utilisateurs trouvés dans "tache_assoc" par leur nom et prénom.
    Auriez vous une idée ?
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  2. #2
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    salut,

    tu ne fais pas de jointure entre ta table tache_assoc et ta table user
    par contre avec ta nouvelle table, ta jointure entre tache et user devient inutile non? la liaison ne devrait pas se faire comme cela
    ou bien j'ai mal compris?

  3. #3
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 224
    Points
    20 224
    Par défaut
    Citation Envoyé par Cybher
    salut,
    tu ne fais pas de jointure entre ta table tache_assoc et ta table user
    Non en effet puisque je la fait déjà entre tache et user , je me suis dis qu'elle n'était peut être pas nécessaire
    Citation Envoyé par Cybher
    par contre avec ta nouvelle table, ta jointure entre tache et user devient inutile non? la liaison ne devrait pas se faire comme cela
    ou bien j'ai mal compris?
    En fait je ne sais pas vraiment :/
    J'ai besoin de faire une jointure entre tache et user pour avoir nom et prenom de l'utilisateur principal mais j'ai également besoin d'avoir les nom et prenom des personnes dans tache_assoc qui est également lié à tache...
    bref je patauge
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    peux tu donner un petit jeu d'essai pour qu'on comprenne mieux?

    j'ai du mal à voir l'intérêt de ta 3eme table si une tache est deja relié à un user via ta table tache.

  5. #5
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 032
    Points
    34 032
    Billets dans le blog
    14
    Par défaut
    Je crois que ce problème ressemble à un morceau de la base de données du logiciel sur lequel je travaille :
    Utilisateurs -0,n----Creer----1,1- Projets
    Utilisateurs -0,n----Affecter----0,n- Projets

    Il n'y a qu'un créateur de projet (dans ton cas un utilisateur principal de la tâche, le responsable peut-être ?) mais d'autres utilisateurs sont affectés au projet (d'autres utilisateurs affectés à une tâche).

    Remplace Projets par Taches dans ton cas et tu as ton morceau de MCD.

    Passons aux tables :
    Users(idUser, login, pass, email, idgroupe, nom, prenom)
    Taches
    (idTache, date_ask, demandeur, client, idUser, descrip, etat)
    Affecter(idUser, idTache, ...)

    Les clés primaires sont soulignées et les clés étrangères sont en italique.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  6. #6
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 224
    Points
    20 224
    Par défaut
    Citation Envoyé par Cybher Voir le message
    peux tu donner un petit jeu d'essai pour qu'on comprenne mieux?
    Oui voici un extrait :
    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
    -- 
    -- Structure de la table `client`
    -- 
     
    CREATE TABLE `client` (
      `id` int(11) NOT NULL auto_increment,
      `label` varchar(255) collate utf8_unicode_ci NOT NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=8 ;
     
    -- 
    -- Contenu de la table `client`
    -- 
     
    INSERT INTO `client` (`id`, `label`) VALUES 
    (1, 'VTP'),
    (2, 'PLU'),
    (3, 'MIS');
     
    -- --------------------------------------------------------
     
    -- 
    -- Structure de la table `projet`
    -- 
     
    CREATE TABLE `projet` (
      `id` int(11) NOT NULL auto_increment,
      `label` varchar(255) collate utf8_unicode_ci NOT NULL,
      `version` varchar(15) collate utf8_unicode_ci default NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=15 ;
     
    -- 
    -- Contenu de la table `projet`
    -- 
     
    INSERT INTO `projet` (`id`, `label`, `version`) VALUES 
    (1, 'PROJET1', '2'),
    (2, 'PROJET2', '3'),
    (3, 'PROJET3', '2');
     
    -- --------------------------------------------------------
     
    -- 
    -- Structure de la table `projet_version`
    -- 
     
    CREATE TABLE `projet_version` (
      `id` int(11) NOT NULL auto_increment,
      `label` varchar(50) collate utf8_unicode_ci NOT NULL,
      `id_projet` int(11) NOT NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=17 ;
     
    -- 
    -- Contenu de la table `projet_version`
    -- 
     
    INSERT INTO `projet_version` (`id`, `label`, `id_projet`) VALUES 
    (2, '5.0', 1),
    (3, '3.01i', 3);
     
     
    -- --------------------------------------------------------
     
    -- 
    -- Structure de la table `tache`
    -- 
     
    CREATE TABLE `tache` (
      `id` int(11) NOT NULL auto_increment,
      `date_ask` date NOT NULL COMMENT 'Date de demande',
      `demandeur` varchar(255) collate utf8_unicode_ci NOT NULL,
      `client` int(11) NOT NULL,
      `description` text collate utf8_unicode_ci NOT NULL,
      `date_limit` date default NULL COMMENT 'Date limite de rendu',
      `etat` varchar(25) collate utf8_unicode_ci NOT NULL COMMENT 'Etat du projet',
      `projet` int(11) NOT NULL,
      `version` int(11) NOT NULL,
      `user` int(11) NOT NULL,
      `planning` int(11) NOT NULL COMMENT 'Id de l entrée planning correspondante',
      `remarque` text collate utf8_unicode_ci,
      `valid_teb` binary(1) NOT NULL default '0',
      `valid_pry` binary(1) NOT NULL default '0',
      PRIMARY KEY  (`id`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=43 ;
     
    -- 
    -- Contenu de la table `tache`
    -- 
     
    INSERT INTO `tache` (`id`, `date_ask`, `demandeur`, `client`, `description`, `date_limit`, `etat`, `projet`, `version`, `user`, `planning`, `remarque`, `valid_teb`, `valid_pry`) VALUES 
    (1, '2008-09-01', 'QSD', 1, 'Description 1', '2008-09-15', 'Terminé', 1, 1, 1, 92, '', 0x31, 0x31),
    (4, '2008-07-01', 'QSD', 3, 'Description 2', '2008-09-01', 'Terminé', 3, 1, 5, 95, '', 0x31, 0x31),
    (5, '2008-03-01', 'QSD', 2, 'Description 3', '2008-08-31', 'Terminé', 2, 2, 6, 96, '', 0x31, 0x31);
     
     
    -- --------------------------------------------------------
     
    -- 
    -- Structure de la table `tache_assoc`
    -- 
     
    CREATE TABLE `tache_assoc` (
      `id` int(11) NOT NULL auto_increment,
      `id_user` int(11) NOT NULL,
      `id_tache` int(11) NOT NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=35 ;
     
    -- 
    -- Contenu de la table `tache_assoc`
    -- 
     
    INSERT INTO `tache_assoc` (`id`, `id_user`, `id_tache`) VALUES 
    (32, 5, 4),
    (34, 1, 1),
    (33, 6, 5);
     
    -- --------------------------------------------------------
     
    -- 
    -- Structure de la table `user`
    -- 
     
    CREATE TABLE `user` (
      `id` int(11) NOT NULL auto_increment,
      `login` varchar(64) collate utf8_unicode_ci NOT NULL,
      `pass` varchar(255) collate utf8_unicode_ci NOT NULL,
      `email` varchar(128) collate utf8_unicode_ci NOT NULL,
      `groupe` int(11) default NULL,
      `nom` varchar(50) collate utf8_unicode_ci default NULL,
      `prenom` varchar(50) character set utf8 default NULL,
      PRIMARY KEY  (`id`),
      UNIQUE KEY `login` (`login`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=18 ;
     
    -- 
    -- Contenu de la table `user`
    -- 
     
    INSERT INTO `user` (`id`, `login`, `pass`, `email`, `groupe`, `nom`, `prenom`) VALUES 
    (1, 'user1', '152fc4dddcedc0be83ea10cd2667d9e4218b00439c65cb352f4a048e409203b2', 'mail@fai.com', 1, 'Triphon', 'Tournesol'),
    (5, 'user2', 'e23c3d7ff76f6e6235ce091f2fcd5fd35748677799d1637acf5ba2bca350e258', 'mail@fai.com', 2, 'Dupond', 'Pierre'),
    (6, 'user3', 'e691c862993f99ddab871762b86353493d84438e60848e3c1a819cce6794e746', 'mail@fai.com', 1, 'Dupont', 'Jean');
    Et donc avec la requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT t.id, date_ask, valid_teb, valid_pry, demandeur, c.label AS client, date_limit, description, etat, remarque, p.label AS label, v.label AS version, nom, prenom, ta.id_user AS lie
    FROM tache t
    INNER JOIN user u ON t.user = u.id
    INNER JOIN projet p ON t.projet = p.id
    LEFT JOIN projet_version v ON t.version = v.id
    LEFT JOIN client c ON t.client = c.id
    LEFT JOIN tache_assoc ta ON ta.id_tache = t.id
    WHERE date_limit >= '2008-01-01'
    AND date_limit <= '2008-12-31'
    ORDER BY date_limit DESC
    LIMIT 0 , 30;
    J'obtiens :

    +----+------------+-----------+-----------+-----------+--------+------------+---------------+--------+----------+---------+---------+---------+-----------+------+
    | id | date_ask | valid_teb | valid_pry | demandeur | client | date_limit | description | etat | remarque | label | version | nom | prenom | lie |
    +----+------------+-----------+-----------+-----------+--------+------------+---------------+--------+----------+---------+---------+---------+-----------+------+
    | 1 | 2008-09-01 | 1 | 1 | QSD | VTP | 2008-09-15 | Description 1 | Termin | | PROJET1 | NULL | Triphon | Tournesol | 1 |
    | 4 | 2008-07-01 | 1 | 1 | QSD | MIS | 2008-09-01 | Description 2 | Termin | | PROJET3 | NULL | Dupond | Pierre | 5 |
    | 5 | 2008-03-01 | 1 | 1 | QSD | PLU | 2008-08-31 | Description 3 | Termin | | PROJET2 | 5.0 | Dupont | Jean | 6 |
    +----+------------+-----------+-----------+-----------+--------+------------+---------------+--------+----------+---------+---------+---------+-----------+------+
    Il me manque juste a réussir la transformation de la colonne "lie" en nom et prénom.

    Citation Envoyé par CinePhil
    Je crois que ce problème ressemble à un morceau de la base de données du logiciel sur lequel je travaille :
    C'est en effet la même chose et j'ai quasi la même structure que toi , je ne suis donc pas rop dans l'erreur :p

    Citation Envoyé par CinePhil
    Il n'y a qu'un créateur de projet (dans ton cas un utilisateur principal de la tâche, le responsable peut-être ?) mais d'autres utilisateurs sont affectés au projet (d'autres utilisateurs affectés à une tâche).
    C'est exactement ca , une tache(liée à un projet) est assignée à un chef de projet mais plusieurs autres personnes peuvent (ou pas) êtres affecté à cette taches

    PS: j'ai enlever toutes les clé étrangère de l'extrait fournis histoire que ca ne pose pas de problème avec les autres tables que je n'ai pas données
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 032
    Points
    34 032
    Billets dans le blog
    14
    Par défaut
    Ce qu'il te manque, c'est la jointure entre table associative 'tache_assoc' et la table 'user' :
    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
    SELECT t.id, date_ask, valid_teb, valid_pry, demandeur, 
      c.label AS client, date_limit, description, etat, remarque, p.label AS label, 
      v.label AS version, u.nom AS NomResp, u.prenom AS PrenomResp, 
      ta.id_user AS lie, u2.nom AS NomAutreUser, 
       u2.prenom AS PrenomAutreUser
    FROM tache t
    INNER JOIN user u ON t.user = u.id
    INNER JOIN projet p ON t.projet = p.id
    LEFT JOIN projet_version v ON t.version = v.id
    LEFT JOIN client c ON t.client = c.id
    LEFT JOIN tache_assoc ta ON ta.id_tache = t.id
    INNER JOIN user u2 ON ta.id_user = u2.id
    WHERE date_limit >= '2008-01-01'
    AND date_limit <= '2008-12-31'
    ORDER BY date_limit DESC
    LIMIT 0 , 30;
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  8. #8
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 224
    Points
    20 224
    Par défaut
    Merci , c'était bien ça le problème

    Dernière question , il est tout à fait possible que j'ai plusieurs intervenant sur une même tache.
    Avec cette requete , j'aurais par exemple 4 lignes pour la tache d'id 5.
    Est il possible de regrouper tous les "nomAutres" dans le même champs (par exemple séparé par des virgules) ou est il plus simple de faire le traitement via php ?
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 032
    Points
    34 032
    Billets dans le blog
    14
    Par défaut
    Oui c'est possible en utilisant la fonction GROUP_CONCAT :
    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
    SELECT t.id, date_ask, valid_teb, valid_pry, demandeur, 
      c.label AS client, date_limit, description, etat, remarque, 
      p.label AS label, v.label AS version, 
      u.nom AS NomResp, u.prenom AS PrenomResp, 
      ta.id_user AS lie, 
      GROUP_CONCAT(
         CONCAT(u2.nom, ' ', u2.prenom) 
         ORDER BY u2.nom, u2.prenom 
         SEPARATOR ','
      ) AS NomAutreUser
    FROM tache t
    INNER JOIN user u ON t.user = u.id
    INNER JOIN projet p ON t.projet = p.id
    LEFT JOIN projet_version v ON t.version = v.id
    LEFT JOIN client c ON t.client = c.id
    LEFT JOIN tache_assoc ta ON ta.id_tache = t.id
    INNER JOIN user u2 ON ta.id_user = u2.id
    WHERE date_limit >= '2008-01-01'
    AND date_limit <= '2008-12-31'
    ORDER BY date_limit DESC
    LIMIT 0 , 30;
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  10. #10
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    Salut Cinephil,

    il ne manque pas un group by dans ta requête?

    A+

    Michel

  11. #11
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 224
    Points
    20 224
    Par défaut
    Super merci
    Me coucherais moins bête ce soir !

    Juste petite correction , il manque un GROUP BY t.id en fin de requete puisque c'est indispensable pour toutes les fonction de groupage style SUM,MAX ...
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  12. #12
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    Citation Envoyé par grunk Voir le message
    Juste petite correction , il manque un GROUP BY t.id en fin de requete puisque c'est indispensable pour toutes les fonction de groupage style SUM,MAX ...
    Salut grunk,

    je dirais même que normalement, il faut mettre dans ton group by toutes tes colonnes présentes dans le select qui ne sont pas avec une fonction de groupage (mais bon comme c'est du MySQL, ça passe )

  13. #13
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 032
    Points
    34 032
    Billets dans le blog
    14
    Par défaut
    Exact Cybher, j'avais (encore) zappé ce détail ! Re-
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

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

Discussions similaires

  1. UPDATE un poil complexe, avec rupture et incrémentation
    Par Sylv666 dans le forum Requêtes
    Réponses: 3
    Dernier message: 19/01/2011, 18h11
  2. Requête : Jointure Complexe
    Par xwawa dans le forum Langage SQL
    Réponses: 4
    Dernier message: 09/03/2006, 10h10
  3. [MySQL 4.0.15] Jointure complexe
    Par Carter dans le forum Langage SQL
    Réponses: 4
    Dernier message: 03/02/2006, 14h31
  4. Auto jointure complexe
    Par ricobye dans le forum Langage SQL
    Réponses: 11
    Dernier message: 19/01/2006, 16h02
  5. Modelisation un poil complexe
    Par osopardo dans le forum Langage SQL
    Réponses: 5
    Dernier message: 10/08/2005, 05h49

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