SQL JOIN,用值替换id

时间:2013-09-27 14:30:50

标签: mysql join

我有一个给我带来麻烦的查询,我不知道该怎么做

我必须从TICKETS表中检索记录并将其与其他2个连接在一起,这不是问题,我需要将记录中的一个值替换为另一个表中的值.... 对于Eg:

表门票:

numint 用户身份 类型 降序 连接 优先 状态 日期 分配

表用户

numint COMPANY_ID 名称 电子邮件 用户名 密码 PS 安全 代币 日期

表公司

numint 名称

示例记录

company_name - user_name - type - title - priority - status - date - assignation

“someCompany” - “someUser” - “someTitle” - 1 - “open” - “yyy / mm / dd” - 2(user_id)

在返回记录的赋值字段中,我需要用users表中的对应值替换它,如果它不是0(零)

到目前为止,这是我的查询

SELECT tickets.numint, tickets.type, tickets.title, tickets.description,
       tickets.priority, tickets.status, tickets.date,
       users.name AS user_name, companies.name AS company_name,
       CASE WHEN tickets.assignation=0 THEN 'not-assigned'
       ELSE ????????? END AS assignation
       FROM tickets
       LEFT JOIN users ON tickets.user_id = users.numint
       LEFT JOIN companies ON users.company_id = companies.numint

我不知道如何替换该值,或者CASE应该在连接之后...

1 个答案:

答案 0 :(得分:2)

是否要将用户名显示为分配。在案例中使用users.name。

SELECT tickets.numint, tickets.type, tickets.title, tickets.description,
       tickets.priority, tickets.status, tickets.date,
       users.name AS user_name, companies.name AS company_name,
CASE WHEN tickets.assignation=0 THEN 'not-assigned'
ELSE users1.name END AS assignation
FROM tickets
LEFT JOIN users ON tickets.user_id = users.numint
LEFT JOIN companies ON users.company_id = companies.numint
LEFT JOIN users AS users1 ON tickets.assignation = users1.numint