sql >> Databasteknik >  >> RDS >> Mysql

MySQL-fråga som sammanfogar tre tabeller

Du menar så här:

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

Utdata kommer att vara något i stil med:

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

Eller ville du returnera alla delar av den på en enda rad?

Om du vill ha en enda rad kan du göra något i stil med:

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

Men det kommer att bli stökigare i PHP att hantera alla grupperade saker.

Utdata kommer att vara något i stil med:

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

Du kan också blanda och matcha de två för att kanske få det bästa av två världar:

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

Utdata kommer att vara något i stil med:

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


  1. Lagra data i MySQL som JSON

  2. Jag vill att mysql-tabellen ska stödja två språk

  3. Förhandsgranska dokument i Microsoft Access Form

  4. Lönedatamodell