sql >> Database >  >> RDS >> Mysql

MySQL-query die drie tabellen samenvoegt

Je bedoelt het zo:

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

De uitvoer zal zoiets zijn als:

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

Of wilde je alle delen ervan in één rij teruggeven?

Als u een enkele rij wilt, kunt u iets doen in de trant van:

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

Maar het wordt nog rommeliger in PHP om met alle gegroepeerde dingen om te gaan.

De uitvoer zal zoiets zijn als:

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

Je kunt de twee ook mixen en matchen om misschien het beste van twee werelden te krijgen:

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

De uitvoer zal zoiets zijn als:

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


  1. Gegevens migreren naar Firebase vanuit mysql

  2. Automatisch aanvullen in MySQL onder Windows

  3. Schakelen tussen meerdere databases in Rails zonder transacties te verbreken

  4. MySQL vs. MariaDB:wat u moet weten