Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Zapytanie MySQL łączące trzy tabele

Masz na myśli to:

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

Wynik będzie wyglądał następująco:

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

A może chcesz zwrócić wszystkie części w jednym rzędzie?

Jeśli chcesz pojedynczy wiersz, możesz zrobić coś w stylu:

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 w PHP zrobi się bardziej bałagan, aby poradzić sobie ze wszystkimi zgrupowanymi rzeczami.

Wynik będzie wyglądał następująco:

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

Możesz także mieszać i łączyć te dwa, aby być może uzyskać to, co najlepsze z obu światów:

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

Wynik będzie wyglądał następująco:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Resetowanie hasła root MySQL, gdy bieżące hasło nie jest znane

  2. Przechowywanie numerów kart kredytowych w SESSION - sposoby na obejście tego?

  3. Jak połączyć datę i godzinę z różnych kolumn MySQL, aby porównać z pełnym DateTime?

  4. Uzyskaj automatyczny dostęp do DB5 do MySQL

  5. Rozwiązywanie problemów z replikacją MySQL:część druga