Mysql
 sql >> Database >  >> RDS >> Mysql

Query MySQL che unisce tre tabelle

Intendi così:

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

L'output sarà qualcosa del tipo:

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

Oppure volevi restituirne tutte le parti in un'unica riga?

Se vuoi una singola riga, puoi fare qualcosa sulla falsariga di:

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

Ma sarà più complicato in PHP gestire tutte le cose raggruppate.

L'output sarà qualcosa del tipo:

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

Potresti anche mescolare e abbinare i due per ottenere forse il meglio da entrambi i mondi:

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

L'output sarà qualcosa del tipo:

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