1

嗨,我试图与夫妇 INNER JOIN 进行查询,我的错在哪里?

SELECT job_tbl.id, accounts.username AS starter, accounts.username AS worker, job_tbl.comment, job_tbl.date, job_tbl.status

FROM job_tbl

在 job_tbl.starter = accounts.id 上的 INNER JOIN 帐户

在 job_tbl.worker = accounts.id 上的 INNER JOIN 帐户

job_tbl 表在这里:

+----+---------+--------+---------+------+--------+
| id | starter | worker | comment | date | status |
+----+---------+--------+---------+------+--------+
| 1  |    1    |    3   |   qwe   | date |   10   |
+----+---------+--------+---------+------+--------+
| 2  |    2    |    1   |   qwe   | date |   10   |
+----+---------+--------+---------+------+--------+

此处的帐户表:

+----+------------+-----------+-------+
| id |  username  | extension | email |
+----+------------+-----------+-------+
| 1  |   Julia    |    100    | email |
+----+------------+-----------+-------+
| 2  |    Eve     |    101    | email |
+----+------------+-----------+-------+
| 3  |    Max     |    102    | email |
+----+------------+-----------+-------+

结果我希望它是:

+----+---------+--------+---------+------+--------+
| id | starter | worker | comment | date | status |
+----+---------+--------+---------+------+--------+
| 1  |  Julia  |   Max  |   qwe   | date |   10   |
+----+---------+--------+---------+------+--------+
| 2  |   Eve   |  Julia |   qwe   | date |   10   |
+----+---------+--------+---------+------+--------+
4

2 回答 2

3

您没有指定将哪个accounts表实例用作启动器或工作器。试试这个:

SELECT job_tbl.id, job_tbl.description, Starter.username AS starter, Worker.username AS worker, job_tbl.comment, job_tbl.date, job_tbl.status
FROM job_tbl
INNER JOIN accounts AS Starter ON job_tbl.starter = Starter.id
INNER JOIN accounts AS Worker ON job_tbl.worker = Worker.id
于 2013-03-14T11:41:29.363 回答
1

问题是您要加入两个表而没有指定导致模棱两可的状态的ALIAS表。accounts

SELECT  a.*,
        b.username StarterName,
        c.userName WorkerName
FROM    job_tbl a
        INNER JOIN account b
            ON a.starter = b.id
        INNER JOIN account c
            ON a.worker = c.ID

要进一步了解有关联接的更多信息,请访问以下链接:

于 2013-03-14T11:40:27.800 回答