Mysql 在联接期间从单个查找表联接多个表
我试图从多个表中输出多个列和。通常,我会使用一个内部联接,这样我就知道查找表中id的值是多少Mysql 在联接期间从单个查找表联接多个表,mysql,pdo,Mysql,Pdo,我试图从多个表中输出多个列和。通常,我会使用一个内部联接,这样我就知道查找表中id的值是多少 SELECT people.*, category.name AS category_name, FROM people INNER JOIN category ON people.category_id = category.id 但我需要使用相同的行数据对同一个查找表进行多次查找 在下面的例子中,我想知道什么人有什么工作,他们的类别是什么
SELECT people.*,
category.name AS category_name,
FROM people
INNER JOIN category ON people.category_id = category.id
但我需要使用相同的行数据对同一个查找表进行多次查找
在下面的例子中,我想知道什么人有什么工作,他们的类别是什么,以及默认的工作状态通常是什么
但我似乎无法对查找表进行两个内部联接
我已经试过了
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
但恐怕我对自己的问题了解不够,不知道该问谷歌什么
有什么帮助吗
人
+----+-------+--------+-------------+
| id | name | job_id | category_id |
+----+-------+--------+-------------+
| 1 | Adam | 1 | 1 |
+----+-------+--------+-------------+
| 2 | Beth | 2 | 2 |
+----+-------+--------+-------------+
| 3 | Clint | 1 | 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 |
+----+-------+--------+----------+--------------+-------------+---------------+
您只需两次加入类别表,一次加入人员类别,一次加入职务类别。此查询将执行您想要的操作:
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
是否可以对人员和工作进行选择*?或者第二个表的列是否必须被声明?如果您需要的话,您完全可以使用SELECT p.*、j.*、c1.name、c2.name。我正在看你在问题中的专栏。谢谢@Nick!我非常感激!
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