sql >> Base de Datos >  >> RDS >> Mysql

Consulta MySQL que une tres tablas.

Te refieres a esto:

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 salida será algo como:

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

¿O quería devolver todas las partes en una sola fila?

Si desea una sola fila, puede hacer 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

Pero se volverá más complicado en PHP para lidiar con todas las cosas agrupadas.

La salida será algo como:

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

También puede mezclar y combinar los dos para obtener lo mejor de ambos 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

La salida será algo como:

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