Соединение нескольких таблиц из одной таблицы поиска во время JOIN - PullRequest
0 голосов
/ 06 сентября 2018

Я пытаюсь вывести несколько столбцов и из нескольких таблиц. Обычно я использую внутреннее соединение, поэтому я знаю, какое значение идентификатора находится в моей справочной таблице.

SELECT  people.*,                    
        category.name AS category_name,
FROM people 
INNER JOIN category ON people.category_id = category.id

Но мне нужно сделать несколько просмотров для одной и той же таблицы поиска с одними и теми же данными строк.

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

Но я не могу сделать два INNER JOIN с поисковой таблицей.

Я пробовал варианты на

SELECT  people.*,                    
        jobs.* 
        category.name AS category_name,

FROM people p

JOIN jobs AS j ON p.job_id = jobs.id
INNER JOIN category ON people.category_id = category.id

Но я боюсь, что не знаю достаточно о моем собственном вопросе, чтобы понять, что спросить в Google.

Любая помощь?

ЛЮДИ

+----+-------+--------+-------------+
| id | name  | job_id | category_id |
+----+-------+--------+-------------+
| 1  | Adam  | 1      | 1           |
+----+-------+--------+-------------+
| 2  | Beth  | 2      | 2           |
+----+-------+--------+-------------+
| 3  | Clint | 1      | 2           |
+----+-------+--------+-------------+

ТРУД

+----+-------+-----------+
| id | name  | category  |
+----+-------+-----------+
| 1  | Cook  | 1         |
+----+-------+-----------+
| 2  | Nurse | 2         |
+----+-------+-----------+

КАТЕГОРИЯ

+----+-----------+
| id | name      |
+----+-----------+
| 1  | Full-Time |
+----+-----------+
| 2  | Part-Time |
+----+-----------+

РЕЗУЛЬТАТ, ЧТО Я ХОЧУ

+----+-------+--------+----------+--------------+-------------+---------------+
| id | name  | job_id | job_name | job_category | category_id | category_name |
+----+-------+--------+----------+--------------+-------------+---------------+
| 1  | Adam  | 1      | Cook     | Full-Time    | 1           | Full-Time     |
+----+-------+--------+----------+--------------+-------------+---------------+
| 2  | Beth  | 2      | Nurse    | Part-Time    | 2           | Part-Time     |
+----+-------+--------+----------+--------------+-------------+---------------+
| 3  | Clint | 1      | Cook     | Full-Time    | 2           | Part-Time     |
+----+-------+--------+----------+--------------+-------------+---------------+

1 Ответ

0 голосов
/ 06 сентября 2018

Вам просто нужно присоединиться к таблице category дважды, один раз для категории человека и один раз для категории работы. Этот запрос будет делать то, что вы хотите:

SELECT p.name, p.job_id, j.name AS job_name, 
       c1.name AS job_category, p.category_id, c2.name AS category_name
FROM people p
JOIN jobs j ON j.id = p.job_id
JOIN category c1 ON c1.id = j.category
JOIN category c2 ON c2.id = p.category_id

Выход:

name    job_id  job_name    job_category    category_id     category_name
Adam    1       Cook        Full-Time       1               Full-Time
Beth    2       Nurse       Part-Time       2               Part-Time
Clint   1       Cook        Full-Time       2               Part-Time

Демонстрация SQLFiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...