使用join构建单个SQL查询.可能吗?

kn3*_*n3l 7 php mysql sql

我有6个表,我将做一个单独的SQL语句:

1)participant
  ***********
  +id_participant
  +id_poste
  +name
  +email

2) profile_formaion
  ****************
  +id_poste
  +id_formation

3) formation
  *********
  +id_formation
  +lable

4) poste
  *********
  +id_poste
  +label

5) session
  *********
  +id_session
  +id_formaion
  +lable

6) session_composition
  *********
  +id_session
  +id_participant
Run Code Online (Sandbox Code Playgroud)

EXAMPLE:

数据:参与者

1 | 2 | user1 | user1@mail.com
2 | 3 | user2 | user2@mail.com
Run Code Online (Sandbox Code Playgroud)

数据:profile_formation

2 | 3
2 | 4
Run Code Online (Sandbox Code Playgroud)

DATA:形成

1 |formation1
2 |formation2
3 |formation3
4 |formation4
Run Code Online (Sandbox Code Playgroud)

数据:poste

1 |Poste1
2 |Poste2
3 |Poste3
Run Code Online (Sandbox Code Playgroud)

DATA:会话

1 |1   /* id_session 1 to id_formation 1  and id_formation=1 is formation1 */
Run Code Online (Sandbox Code Playgroud)

数据:session_composition

1 |2  /* id_session 1 to id_participant 2 */
Run Code Online (Sandbox Code Playgroud)

我在尝试:

SELECT 
    participant.id_participant,
    participant.id_poste,
    participant.name,
    participant.email,
    formation.lable 
FROM participant
INNER JOIN profile_formaion ON
    profile_formaion.id_poste = participant.id_poste 
INNER JOIN formation ON
    formation.id_formation = profile_formaion.id_formation
Run Code Online (Sandbox Code Playgroud)

如何使用sql语句(join)来获取结果:

数据:结果

1 | 2 | user1 | user1@mail.com | poste2|formation3
1 | 2 | user1 | user1@mail.com | poste2|formation4
2 | 3 | user2 | user2@mail.com | poste3|formation1 // How can we join to get it.
Run Code Online (Sandbox Code Playgroud)

nee*_*lsg 2

如果您不反对使用联合体,您可以随时这样做:

select
    participant.id_participant,
    participant.id_poste,
    participant.name,
    participant.email,
    poste.label,
    formation.lable
from
    participant
    inner join poste on participant.id_poste = poste.id_poste
    inner join profile_formaion on participant.id_poste = profile_formaion.id_poste
    inner join formation on profile_formaion.id_formation = formation.id_formation

union all

select
    participant.id_participant,
    participant.id_poste,
    participant.name,
    participant.email,
    poste.label,
    formation.lable
from
    participant
    inner join poste on participant.id_poste = poste.id_poste
    inner join session_composition on participant.id_participant = session_composition.id_participant
    inner join session on session_composition.id_session = session.id_session
    inner join formation on session.id_formaion = formation.id_formation
Run Code Online (Sandbox Code Playgroud)