Mysql
 sql >> Base de données >  >> RDS >> Mysql

Requête MySQL joignant trois tables

Tu veux dire comme ça :

select
    a.project_id,
    b.list_id,
    c.item_id
from
    projects a
        join lists b
            on a.project_id=b.project_id
        join items c
            on b.list_id=c.list_id

La sortie sera quelque chose comme :

project_id | list_id | item_id
 1         | 5       |  45
 1         | 5       |  46
 1         | 8       |  12

Ou vouliez-vous en renvoyer toutes les parties sur une seule ligne ?

Si vous voulez une seule ligne, vous pouvez faire quelque chose comme :

select
    a.project_id,
    group_concat(b.list_id) as listIDs,
    group_concat(c.item_id) as itemIDs
from
    projects a
        join lists b
            on a.project_id=b.project_id
        join items c
            on b.list_id=c.list_id

Mais cela deviendra plus compliqué en PHP de gérer tous les éléments groupés.

La sortie sera quelque chose comme :

project_id | list_id | item_id
 1         | 5,8     |  45, 46, 12

Vous pouvez également mélanger et assortir les deux pour peut-être obtenir le meilleur des deux mondes :

select
    a.project_id,
    b.list_id as listIDs,
    group_concat(c.item_id) as itemIDs
from
    projects a
        join lists b
            on a.project_id=b.project_id
        join items c
            on b.list_id=c.list_id

La sortie sera quelque chose comme :

project_id | list_id | item_id
 1         | 5       |  45, 46
 1         | 8       |  12