Как соединить несколько таблиц sql

277
26 ноября 2016, 20:13

Имеется две таблицы: user, proc_leader.

Первая таблица состоит из имен:

 uid| username| salary|  
 ---+---------+-------+
 1  | beny    | 0     |
 2  | barikan | 0     |

Вторая таблица proc_leader состоит из foreign key:

 projectNo| process | proc_leader|  
 ---------+---------+------------+
 1610004  | ANM BLD | beny       |
 1610004  | BGD CUP | barikan    |
 1610005  | ANM BLD | bob        |
 1610006  | BGD CUP | barikan    |

Все данные в этой таблице являются foreign key к другим таблицам:

  • projectNo foreign key в таблице project
  • process foreign key в таблице theme_name
  • proc_leader foreign key в таблице user

Я хочу вывести с помощью sql каждое имя из таблицы user, каждый процесс и номер проекта, которому он присвоен. Например, что-то такое:

 uid| username| projectNo| process| 
 ---+---------+----------+--------+
 1  | beny    | 1610004  |ANM BLD |
 1  | beny    | 1610004  |BGD CUP |
 2  | bob     | 1610005  |ANM BLD |
 2  |barikan  | 1610006  |BGD CUP |

Каким образом это можно сделать?

Answer 1

Судя по всему, обычным join'ом:

SELECT * FROM user INNER JOIN proc_leader pl ON (username = pl.proc_leader)

И ещё я бы в proc_leader использовал не имя, а uid: имена ведь есть уже в user

Answer 2

Используйте соединение таблиц:

select u.uid, u.username, pl.projectNo, pl.process
from user u join proc_leader pl on u.username = pl.proc_leader

Пример на sqlfiddle.

READ ALSO
MySQL и дублирование первичного ключа

MySQL и дублирование первичного ключа

ЗдрафствуйтеУ меня такой вопрос

210
JOINы в MySQL специфика применения

JOINы в MySQL специфика применения

ЗдравствуйтеСтолкнулся с вопросом, на который не совсем понимаю ответ

332
Что значит “SELECT NULL”?

Что значит “SELECT NULL”?

Что значит выражение MySQL SELECT NULL FROM table_name? Как я поняла, оно часто используется в сочетании с IF EXISTS или IF NOT EXISTS, например:

209
MySQL триггеры: Как узнать название таблицы и поля, которое обновили/удалили, за счет чего отработал триггер

MySQL триггеры: Как узнать название таблицы и поля, которое обновили/удалили, за счет чего отработал триггер

Задача в следующем: при обновлении записи таблицы нужно создать триггер, который добавит в таблицу изменений пользователя, название таблицы,...

223