sql >> Databáze >  >> RDS >> Mysql

MySQL dotaz spojující tři tabulky

Myslíš takhle:

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

Výstup bude něco jako:

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

Nebo jste chtěli vrátit všechny jeho části v jednom řádku?

Pokud chcete jeden řádek, můžete udělat něco ve smyslu:

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

Ale v PHP bude složitější zabývat se všemi seskupenými věcmi.

Výstup bude něco jako:

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

Můžete je také kombinovat, abyste získali to nejlepší z obou světů:

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

Výstup bude něco jako:

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


  1. Jak připojit pracovní stůl mysql ke spuštění mysql uvnitř dockeru?

  2. SQL dotazuje vazebné proměnné vs. je specifikuje

  3. Jedinečný klíč v Oracle s příklady

  4. životopis pro XID zvýšen 0:neznámý