Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Abfrage, die drei Tabellen verbindet

Du meinst so:

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

Die Ausgabe sieht in etwa so aus:

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

Oder wollten Sie alle Teile davon in einer einzigen Zeile zurückgeben?

Wenn Sie eine einzelne Zeile möchten, können Sie Folgendes tun:

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

Aber es wird in PHP unordentlicher, mit all dem gruppierten Zeug umzugehen.

Die Ausgabe sieht in etwa so aus:

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

Sie können die beiden auch mischen und kombinieren, um vielleicht das Beste aus beiden Welten zu erhalten:

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

Die Ausgabe sieht in etwa so aus:

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