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 :

Retrouver les groupes identiques


Sujet :

Requêtes MySQL

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 9
    Points : 4
    Points
    4
    Par défaut Retrouver les groupes identiques
    Bonjours à tous,

    Je possède deux tables dans ma bases de données, PARTICIPATIONS et INSCRIPTION. J'aimerais retrouver les équipes identiques en obtenant les numéro d'identification des participations. Je m'explique :

    Voici mes deux tables :

    PARTICIPATION
    Nom : Capture.JPG
Affichages : 107
Taille : 15,8 Ko

    INSCRIPTION
    Nom : Capture2.JPG
Affichages : 142
Taille : 15,0 Ko

    Ce que je souhaite faire, c'est en ayant les numéros des joueurs (ex 54 et 55), retrouver la liste des participations pour lesquelles ces joueurs ont été ensemble (seulement ces deux personnes, et non les participations où les joueurs 54, 55 et 56 auraient été ensemble).

    Dans ma table PARTICIPATION, il arrive que les noms d'équipe soient différentes même si l'équipe contient exactement les mêmes personnes et certaines participations n'ont pas de nom d'équipe, puisqu'une seule personne est liée à celle-ci.

    Ainsi, en utilisant 54 et 55 dans ma requête, j'obtiendrais la liste des participations 239 et 242 (et non 237).
    Pour les joueurs 57 et 58, j'obtiendrais la participation 240.
    Et pour par exemple les joueurs 54, 55 et 56, j'obtiendrais la participation 237.
    La requête avec les joueurs 54, 55 et 58 ne donnerait aucun résultat (une liste vide).

    Merci à l'avance pour votre aide.
    Thomas

  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 384
    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 384
    Points : 19 087
    Points
    19 087
    Par défaut
    Salut Tomyboy97.

    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
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    --------------
    START TRANSACTION
    --------------
     
    --------------
    DROP DATABASE IF EXISTS `base`
    --------------
     
    --------------
    CREATE DATABASE IF NOT EXISTS `base`
            DEFAULT CHARACTER SET `latin1`
            DEFAULT COLLATE       `latin1_general_ci`
    --------------
     
    --------------
    DROP TABLE IF EXISTS `participation`
    --------------
     
    --------------
    CREATE TABLE `participation`
    ( `id`       integer  unsigned NOT NULL auto_increment PRIMARY KEY,
      `gagnant`  smallint unsigned NOT NULL,
      `partie`   smallint unsigned NOT NULL,
      `equipe`   varchar(255)          NULL default null
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    insert into `participation` (`id`,`gagnant`,`partie`,`equipe`) values
      (240, 0, 87, 'les illuminés'),
      (236, 0, 85, default),
      (235, 0, 85, default),
      (239, 0, 87, 'les meilleurs'),
      (238, 0, 86, default),
      (237, 0, 86, 'les meilleurs'),
      (242, 0, 88, 'les pires'),
      (241, 0, 88, default)
    --------------
     
    --------------
    select * from `participation`
    --------------
     
    +-----+---------+--------+---------------+
    | id  | gagnant | partie | equipe        |
    +-----+---------+--------+---------------+
    | 235 |       0 |     85 | NULL          |
    | 236 |       0 |     85 | NULL          |
    | 237 |       0 |     86 | les meilleurs |
    | 238 |       0 |     86 | NULL          |
    | 239 |       0 |     87 | les meilleurs |
    | 240 |       0 |     87 | les illuminés |
    | 241 |       0 |     88 | NULL          |
    | 242 |       0 |     88 | les pires     |
    +-----+---------+--------+---------------+
    --------------
    DROP TABLE IF EXISTS `inscription`
    --------------
     
    --------------
    CREATE TABLE `inscription`
    ( `id`             integer  unsigned NOT NULL auto_increment PRIMARY KEY,
      `participation`  integer  unsigned NOT NULL,
      `joueur`         integer  unsigned NOT NULL
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    insert into `inscription` (`participation`,`joueur`) values
      (241, 56),
      (242, 55),
      (242, 54),
      (240, 58),
      (240, 57),
      (239, 55),
      (239, 54),
      (238, 57),
      (237, 55),
      (237, 54),
      (237, 56),
      (235, 55),
      (236, 54)
    --------------
     
    --------------
    select * from `inscription`
    --------------
     
    +----+---------------+--------+
    | id | participation | joueur |
    +----+---------------+--------+
    |  1 |           241 |     56 |
    |  2 |           242 |     55 |
    |  3 |           242 |     54 |
    |  4 |           240 |     58 |
    |  5 |           240 |     57 |
    |  6 |           239 |     55 |
    |  7 |           239 |     54 |
    |  8 |           238 |     57 |
    |  9 |           237 |     55 |
    | 10 |           237 |     54 |
    | 11 |           237 |     56 |
    | 12 |           235 |     55 |
    | 13 |           236 |     54 |
    +----+---------------+--------+
    --------------
    select      t1.participation
     
          from  `inscription` as t1
     
    inner join  (   select  participation,
                            count(*) as nbre
                      from  `inscription`
                  group by  participation
                ) as t2
            on  t2.participation = t1.participation
     
    inner join  `inscription` as t3
            on  t3.participation = t1.participation
     
         where  t1.joueur = 54
           and  t3.joueur = 55
           and  t2.nbre   =  2
     
      group by  t1.participation
    --------------
     
    +---------------+
    | participation |
    +---------------+
    |           242 |
    |           239 |
    +---------------+
    --------------
    select      t1.participation
     
          from  `inscription` as t1
     
    inner join  (   select  participation,
                            count(*) as nbre
                      from  `inscription`
                  group by  participation
                ) as t2
            on  t2.participation = t1.participation
     
    inner join  `inscription` as t3
            on  t3.participation = t1.participation
     
         where  t1.joueur = 57
           and  t3.joueur = 58
           and  t2.nbre   =  2
     
      group by  t1.participation
    --------------
     
    +---------------+
    | participation |
    +---------------+
    |           240 |
    +---------------+
    --------------
    select      t1.participation
     
          from  `inscription` as t1
     
    inner join  (   select  participation,
                            count(*) as nbre
                      from  `inscription`
                  group by  participation
                ) as t2
            on  t2.participation = t1.participation
     
    inner join  `inscription` as t3
            on  t3.participation = t1.participation
     
    inner join  `inscription` as t4
            on  t4.participation = t1.participation
     
         where  t1.joueur = 54
           and  t3.joueur = 55
           and  t4.joueur = 56
           and  t2.nbre   =  3
     
      group by  t1.participation
    --------------
     
    +---------------+
    | participation |
    +---------------+
    |           237 |
    +---------------+
    --------------
    select      t1.participation
     
          from  `inscription` as t1
     
    inner join  (   select  participation,
                            count(*) as nbre
                      from  `inscription`
                  group by  participation
                ) as t2
            on  t2.participation = t1.participation
     
    inner join  `inscription` as t3
            on  t3.participation = t1.participation
     
    inner join  `inscription` as t4
            on  t4.participation = t1.participation
     
         where  t1.joueur = 54
           and  t3.joueur = 55
           and  t4.joueur = 58
     
      group by  t1.participation
    --------------
     
    --------------
    COMMIT
    --------------
     
    Appuyez sur une touche pour continuer...
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 9
    Points : 4
    Points
    4
    Par défaut Merci
    Merci beaucoup Artemus24,

    Votre solution m'a vraiment aidé à trouver la solution optimale pour ma requête. J'ai modifié un peu votre méthode afin de trouver les résultats adéquats pour mes besoins et voici ce que j'obtiens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT * FROM inscription a
    WHERE a.joueur IN (54,55)
    GROUP BY a.participation
    HAVING COUNT(*) = 2
    AND COUNT(*) =
    (
        SELECT COUNT(*) FROM inscription b
        WHERE b.participation = a.participation
        GROUP BY b.participation
    )

  4. #4
    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 384
    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 384
    Points : 19 087
    Points
    19 087
    Par défaut
    Salut Yomyboy97.

    Votre solution ne fonctionne pas car un "in ()" est équivalent à un "ou".
    De ce fait, la condition peut être juste, mais le résultat faux. Pourquoi ?

    Parce que la ligne que vous extrayez peut très bien posséder l'une des conditions : joueur = 54 ou = 55 mais pas les deux.
    Et le count(*) peut très bien retourner 2 joueurs, mais avec nécessaire l'un qui est à 54 ou à 55, et l'autre joueur à 56 par exemple.

    Par 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
    --------------
    select      t1.participation
     
          from  `inscription` as t1
     
    inner join  (   select  participation,
                            count(*) as nbre
                      from  `inscription`
                  group by  participation
                ) as t2
            on  t2.participation = t1.participation
     
         where  t1.joueur in (54, 55, 58)
           and  t2.nbre   =  3
     
      group by  t1.participation
    --------------
     
    +---------------+
    | participation |
    +---------------+
    |           237 |
    +---------------+
    alors que le résultat attendu est vide.

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

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 9
    Points : 4
    Points
    4
    Par défaut Pourtant
    Pourtant, lorsque j'essaie 54, 55 et 56 avec ma solution, j'obtiens bel et bien la participation 237. Aussi, lorsque j'essaie la requête avec 54, 55 et 58, ça fonctionne (j'obtiens une liste vide) et c'est bien le résultat souhaité.

    Nom : Capture.JPG
Affichages : 115
Taille : 39,3 Ko

    C'est étrange, c'est une réponse différente à la vôtre...

  6. #6
    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 384
    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 384
    Points : 19 087
    Points
    19 087
    Par défaut
    Salut tomyboy97.

    En effet, vous avez raison !
    Je vais mettre cela sur le compte de la fatigue.
    Il est possible de ne pas faire de sous-requête.
    J'ai ajouté un contrôle supplémentaire, les joueurs doivent être tous distincts, ce qui donne :
    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
    --------------
    select      t1.participation
          from  `inscription` as t1
     
    inner join  `inscription` as t2
            on  t2.participation = t1.participation
     
         where  t1.joueur in (54, 55, 56)
      group by  t1.participation
        having  count(distinct t1.joueur) = count(distinct t2.joueur)
           and  count(distinct t1.joueur) = 3
      order by  t1.participation
    --------------
     
    +---------------+
    | participation |
    +---------------+
    |           237 |
    +---------------+
    --------------
    select      t1.participation
          from  `inscription` as t1
     
    inner join  `inscription` as t2
            on  t2.participation = t1.participation
     
         where  t1.joueur in (54, 55, 58)
      group by  t1.participation
        having  count(distinct t1.joueur) = count(distinct t2.joueur)
           and  count(distinct t1.joueur) = 3
      order by  t1.participation
    --------------
    Cette fois-ci, ça fonctionne.

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

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 9
    Points : 4
    Points
    4
    Par défaut Merci merci merci
    Un énorme merci, je vais tester ce code et voir lequel fonctionne le mieux (et surtout lequel est plus rapide).

    Merci encore.
    Thomas

  8. #8
    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 384
    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 384
    Points : 19 087
    Points
    19 087
    Par défaut
    Salut Tonybox97.

    Il est 2H20 en France au moment où j'écris ce message.
    Et oui, je ne suis pas encore couché !

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

  9. #9
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 9
    Points : 4
    Points
    4
    Par défaut Ça fonctionne
    Et oui, cette nouvelle solution fonctionne parfaitement, merci beaucoup

  10. #10
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 9
    Points : 4
    Points
    4
    Par défaut Liste des équipes
    Maintenant, serait-il possible de construire une liste des équipes, en regroupant les équipes identiques seulement si le nom de l'équipe est le même. J'ai modifié mes tables afin de pouvoir tester correctement :

    Participation :
    Nom : Participation.JPG
Affichages : 100
Taille : 23,4 Ko

    Inscription :
    Nom : inscription.JPG
Affichages : 97
Taille : 23,5 Ko

    Présentement, j'ai la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT Inscription.participation AS idParticipation, Participation.nomEquipe FROM Inscription
    INNER JOIN Participation ON Participation.idParticipation = Inscription.participation
    GROUP BY Inscription.participation
    HAVING COUNT(DISTINCT Inscription.joueur) >= 2
    ORDER BY Participation.nomEquipe
    Par contre le résultat est :
    Nom : 123.JPG
Affichages : 90
Taille : 14,5 Ko

    Puisque les participations 239, 242, 243 ont les mêmes joueurs exactement, mais que les participations 239 et 243 ont le même nom d'équipe, j'aimerais regrouper ces deux participations en une seule, afin d'obtenir cette l'équipe "les meilleurs" une seule fois pour ces personnes.
    Le résultat pourrait être (l'une ou l'autre des solutions ne me dérange pas) :

    Solution 1 :
    240, Les illuminés
    237, Les meilleurs
    239, Les meilleurs
    242, Les pires

    Solution 2 :
    240, Les illuminés
    237, Les meilleurs
    243, Les meilleurs
    242, Les pires

    Tant que les équipes qui possèdent les mêmes personnes et le même nom soient regroupés, le numéro de participation associé ne m'importe peu.

    Merci à l'avance
    Thomas

  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 384
    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 384
    Points : 19 087
    Points
    19 087
    Par défaut
    Salut Tomyboy97.

    J'ai décomposé la requête afin de montrer les étapes de la sélection.
    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
    drop view if exists `vue`
    --------------
     
    --------------
    create view `vue` as
          select  t1.equipe,
                  t1.id,
                  group_concat(distinct t2.joueur order by t2.joueur) as liste
     
            from  `participation` as t1
     
      inner join  `inscription`   as t2
              on  t2.participation = t1.id
     
           where  t1.equipe is not null
        group by  t1.equipe, t1.id
    --------------
     
    --------------
    select * from `vue`
    --------------
     
    +---------------+-----+----------+
    | equipe        | id  | liste    |
    +---------------+-----+----------+
    | les illuminés | 240 | 57,58    |
    | les meilleurs | 237 | 54,55,56 |
    | les meilleurs | 239 | 54,55    |
    | les meilleurs | 243 | 54,55    |
    | les pires     | 242 | 54,55    |
    +---------------+-----+----------+
    --------------
    select    equipe,
              any_value(id) as participation
     
        from  `vue`
     
    group by  equipe, liste
    --------------
     
    +---------------+---------------+
    | equipe        | participation |
    +---------------+---------------+
    | les illuminés |           240 |
    | les meilleurs |           237 |
    | les meilleurs |           239 |
    | les pires     |           242 |
    +---------------+---------------+
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  12. #12
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 9
    Points : 4
    Points
    4
    Par défaut Wow
    Ça fonctionne à merveille. Un énorme merci encore une fois

    Thomas...

  13. #13
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 9
    Points : 4
    Points
    4
    Par défaut Liste des équipes pour un joueur
    Rebonjour,

    Et si j'ai besoin d'avoir la liste des équipes qui pour un joueur en particulier, regroupées s'il s'agit des mêmes joueurs dans l'équipe, comment je fais ?. Les joueurs dans l'équipe doivent être dans une seule colonne de la table de résultat, comme à la question précédente, ex. (54,55,56) incluant le joueur recherché.

    Merci encore
    Thomas

  14. #14
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2019
    Messages : 9
    Points : 4
    Points
    4
    Par défaut Solution
    Finalement, j'ai réussi à trouver une solution simple pour trouver les équipes d'un joueur en particulier. Voici mon code (exemple avec le joueur 54) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT T.* FROM (SELECT T1.nomEquipe, T1.idParticipation, group_concat(distinct T2.joueur ORDER BY T2.joueur) AS listeJoueurs
    FROM Participation as T1
    INNER JOIN Inscription AS T2 ON T2.participation = T1.idParticipation
    WHERE T1.nomEquipe IS NOT NULL GROUP BY T1.nomEquipe, T1.idParticipation) T
    WHERE T.listeJoueurs REGEXP '(^54$)|(^54,)|(,54,)|(,54$)'
    GROUP BY T.nomEquipe, T.listeJoueurs
    ORDER BY T.nomEquipe

Discussions similaires

  1. [RegEx] Retrouver les sous-groupes nommés dans les résultats
    Par SpaceFrog dans le forum Langage
    Réponses: 2
    Dernier message: 14/07/2010, 22h18
  2. Réponses: 5
    Dernier message: 30/06/2008, 11h43
  3. Réponses: 7
    Dernier message: 23/09/2005, 20h58
  4. retrouver les compsants FASTNET sous Delphi 7
    Par fandor7 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 11/06/2003, 18h11

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