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

MySQL-forespørgsel, der forbinder tre tabeller

Du mener sådan her:

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

Output vil være noget i stil med:

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

Eller ønskede du at returnere alle dele af den i en enkelt række?

Hvis du vil have en enkelt række, kan du gøre noget i retning af:

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 bliver mere rodet i PHP at håndtere alle de grupperede ting.

Output vil være noget i stil med:

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

Du kan også mikse og matche de to for måske at få det bedste fra begge verdener:

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

Output vil være noget i stil med:

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


  1. Hvordan kortlægger jeg en BigDecimal i Hibernate, så jeg får den samme skala tilbage, som jeg har lagt ind?

  2. MySQL FEJL 502:VÆLG * FRA tabel WHERE uid=1 ORDER BY id DESC LIMIT 0, 100; Sideinddeling virker ikke

  3. Hvad er SQL-operatører, og hvordan fungerer de?

  4. DECODE( ) funktion i SQL Server