Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL заявка, свързваща три таблици

Искаш да кажеш така:

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

Изходът ще бъде нещо като:

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

Или искате да върнете всички негови части в един ред?

Ако искате един ред, можете да направите нещо по реда на:

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

Но ще стане по-объркано в PHP да се справя с всички групирани неща.

Изходът ще бъде нещо като:

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

Можете също да смесите и съчетаете двете, за да получите най-доброто от двата свята:

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

Изходът ще бъде нещо като:

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. MySQL:Вмъкнете, ако този ip няма записи

  2. Вмъкнете данни в множество таблици, като използвате един формуляр

  3. дозвуково 2 присъединяване на множество колони

  4. схема на база данни за атрибути на продукти

  5. Променете таблицата с помощта на подизбор