Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Consulta MySQL juntando três tabelas


Você quer dizer assim:
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

A saída será algo como:
project_id | list_id | item_id
 1         | 5       |  45
 1         | 5       |  46
 1         | 8       |  12

Ou você queria retornar todas as partes dele em uma única linha?

Se você quiser uma única linha, você pode fazer algo como:
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

Mas ficará mais confuso no PHP lidar com todas as coisas agrupadas.

A saída será algo como:
project_id | list_id | item_id
 1         | 5,8     |  45, 46, 12

Você também pode misturar e combinar os dois para obter o melhor dos dois mundos:
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

A saída será algo como:
project_id | list_id | item_id
 1         | 5       |  45, 46
 1         | 8       |  12