多表MySQL加入我想加入一个特定表两次的地方

时间:2015-08-20 19:41:47

标签: php mysql join

我的数据库中有以下表格,它们将用户错误记录为日志,以便我可以看到谁出错并在什么时间出现。

日志,用户,错误类型和时间段。

用户包含,

id |名称
1大卫
2标记
3达伦郎

错误类型包含
id | typeoferror
1错误类型1
2错误类型2
3 errortype 3

时间段包含
id |期间
1月7日上午7点至11点 2上午11点 - 下午3点
3 3pm - 7pm
4晚7点至11点

和log contains

id |用户|日期|时间|员工| typeofmiss |时间段| dateoferror |笔记
1 | 1 | 1/1/15 | 11:23 | 2 | 2 | 3 | 15年1月1日|嗒嗒

我希望用户列和staff列都链接到users表和typeofmiss列以链接到errortype列和timeperiod列以链接到timeperiod表,这样当我运行查询时它会返回:

1 - David - 1/1/15 - 11:23 - Mark - errortype 2 - 3 pm - 11pm - 1/1/15 - blah

我设法让查询部分正常工作,但是我无法将来自users表的数据链接两次,即对于用户列和staff列,它为两列返回相同的名称。 有没有办法让这个工作,我必须得到数据,然后使用PHP或其他东西将数字更改为名称?

由于

1 个答案:

答案 0 :(得分:0)

您需要对表进行别名,然后指定要选择的(别名)列。

SELECT 
    a.id, a.user, a.date, b.name AS user_name, c.name AS staff_name, d.typeoferror
FROM 
    log AS a
JOIN 
    users AS b ON a.user = b.id 
JOIN 
    users AS c ON a.staff = c.id
JOIN 
    errortype d ON a.typeofmiss = d.id

https://dev.mysql.com/doc/refman/5.1/en/join.html