我有两张桌子:电话和员工。在调用表中,我有一个字段enter_emp_id
和另一个follow_emp_id
。它们包含员工进入呼叫的值以及分配给呼叫的员工。我的第二个表员工包含employee_id
和employee
个字段。我能够编写一个查询来显示结果,其中包含进入呼叫的员工姓名,但不会分配给谁。我在查询中确实有其他值,但我需要在结果中显示第二个员工姓名。以下是我目前使用的内容:
SELECT
`calls`.`call_id`,
`calls`.`enter_date`,
`call_state`.`call_state`,
`customers`.`customer_name`,
`calls`.`comments`,
`employees`.`employee`,
`call_reasons`.`call_reason`
FROM
`customers`
INNER JOIN `calls` ON (`customers`.`customer_id` = `calls`.`customer_id`)
INNER JOIN `employees` ON (`employees`.`employee_id` = `calls`.`enter_emp_id`)
INNER JOIN `call_state` ON (`call_state`.`call_state_id` = `calls`.`call_state_id`)
INNER JOIN `call_reasons` ON (`call_reasons`.`call_reason_id` = `calls`.`call_reason_id`)
WHERE
`calls`.`call_id` = $call_id;
答案 0 :(得分:2)
我希望我理解你的问题。您可以使用AS
更改或缩短sql用法的表名
SELECT
`calls`.`call_id`,
`calls`.`enter_date`,
`call_state`.`call_state`,
`customers`.`customer_name`,
`calls`.`comments`,
`employees`.`employee`,
`assigned`.`employee` as assigned_employee,
`call_reasons`.`call_reason`
FROM
`customers`
INNER JOIN `calls` ON (`customers`.`customer_id` = `calls`.`customer_id`)
INNER JOIN `employees` ON (`employees`.`employee_id` = `calls`.`enter_emp_id`)
INNER JOIN `employees` AS `assigned` ON (`assigned`.`employee_id` = `calls`.`follow_emp_id`)
INNER JOIN `call_state` ON (`call_state`.`call_state_id` = `calls`.`call_state_id`)
INNER JOIN `call_reasons` ON (`call_reasons`.`call_reason_id` = `calls`.`call_reason_id`)
WHERE
`calls`.`call_id` = $call_id;
答案 1 :(得分:2)
您需要为每个员工ID关联加入员工表TWICE ...并使用相应的ALIAS来获取所需的值。并对表进行别名并删除不需要的tick
标记。只有可能的保留字冲突才需要。
SELECT
c.call_id,
c.enter_date,
cs.call_state,
cust.customer_name,
c.comments,
entered.employee,
assigned.employee as AssignedEmployee,
cr.call_reason
FROM
calls c
INNER JOIN customers cust
ON c.customer_id = cust.customer_id
INNER JOIN employees entered
ON c.enter_emp_id = entered.employee_id
INNER JOIN employees assigned
ON c.enter_emp_id = assigned.employee_id
INNER JOIN call_state cs
ON c.call_state_id = cs.call_state_id
INNER JOIN call_reasons cr
ON c.call_reason_id = cr.call_reason_id
WHERE
c.call_id = $call_id;
答案 2 :(得分:0)
感谢以下工作: 选择 c.call_id, c.enter_date, cs.call_state, cust.customer_name, c.comments, entered.employee, entered.employee, cr.call_reason 从 叫c INNER JOIN客户托管 ON c.customer_id = cust.customer_id INNER JOIN员工进入 ON c.enter_emp_id = entered.employee_id INNER JOIN员工已分配 ON c.enter_emp_id = assigned.employee_id INNER JOIN call_state cs ON c.call_state_id = cs.call_state_id INNER JOIN call_reasons cr ON c.call_reason_id = cr.call_reason_id 哪里 c.call_id = $ call_id;