2012-06-10 33 views
1

问题:加入两个SQL表互相利用两列

我想在另一个表“翻译”在分级表中的两列(betyg_essays)ID,以这些用户的真实姓名(betyg_users)。

分级表(betyg_essays)看起来就像这样:

enter image description here

用户表(betyg_users)看起来像这样:

enter image description here

PHP代码(到目前为止):

$query = 'SELECT * FROM betyg_essays JOIN betyg_users ON betyg_essays.Examiner = betyg_users.UID'; 

审查员/主管列(betyg_essays)对应于UID列(betyg_users)。

希望的输出应为(使用FIRSTNAME /姓氏列):

  1. 审查员:约翰霍普金斯。主管:Mike Baker。
  2. 考官:约翰霍普金斯。主管:Mike Baker。

非工作SQL查询:

$query = "SELECT 
      (u1.Firstname + ' ' + u1.Lastname) AS Examiner, 
      (u2.Firstname + ' ' + u2.Lastname) AS Supervisor 
     FROM betyg_essays grade 
      INNER JOIN betyg_users u1 ON grade.Examiner = u1.UID 
      INNER JOIN betyg_users u2 ON grade.Supervisor = u2.UID"; 

回答

2
SELECT 
CONCAT(u1.FirstName, ' ', u1.LastName) AS Examiner, 
CONCAT(u2.FirstName, ' ', u2.LastName) AS Supervisor 
FROM betyg_essays e 
INNER JOIN betyg_users u1 ON e.Examiner = u1.UID 
INNER JOIN betyg_users u2 ON e.Supervisor = u2.UID 

我没有尝试过的代码,你可能需要做一些调整。

UPDATE:固定编号的

INNER JOIN betyg_users u2 ON e.Supervisor = u2.UID 

UPDATE2:

我已经改变了+到concat函数。显然,MySQL处理字符串的方式与SQL Server不同。

+0

我已经试过你的代码,但输出只是给我0 0和0 0.我已经起来了记录了我在问题中使用的代码。 – kexxcream

+0

@sarwara我已更新您的答案,请验证 –

+0

@kexxcream我改变了我的答案,我不知道mysql不允许在数字上进行操作:/ – Sarwara

1

试试这个

SELECT CONCAT(betyg_users.`Firstname`," ",betyg_users.`Lastname`) AS `examiner_name`, 
CONCAT(betyg_users.`Firstname`," ",betyg_users.`Lastname`) AS `superviser_name` 
FROM `betyg_essays` 
INNER JOIN `betyg_users` ON betyg_essays.`Examiner` = betyg_users.`UID` 
INNER JOIN `betyg_users` ON betyg_essays.`Supervisor` = betyg_users.`UID`; 
+0

这很好,但我期待在考官和主管合并名字/姓氏。 – kexxcream

+0

请参阅我的更新回答.......... @kexxcream –

2

在这里,你需要加入USER_TABLE前两次为获得考官的用户名和第二对上司的用户名

SELECT (g1.FirstName + ' ' + g1.LastName) AS Examiner,' , (g2.FirstName + ' ' + g2.LastName) AS Supervisor 
FROM grading_table grade 
INNER JOIN user_table g1 ON grade.examiner = g1.uid 
INNER JOIN user_table g2 ON grade.supervisor = g2.uid 
+0

谢谢,但我期待在Examiner和Supervisor中结合名和姓。 – kexxcream

+0

不客气。我已经更新了我的答案,它会给你结合名字和姓氏 –

2

最终的解决方案:

$query = "SELECT 
      CONCAT (u1.Firstname, ' ', u1.Lastname) AS Examiner, 
      CONCAT (u2.Firstname, ' ', u2.Lastname) AS Supervisor 
     FROM betyg_essays grade 
      INNER JOIN betyg_users u1 ON grade.Examiner = u1.UID 
      INNER JOIN betyg_users u2 ON grade.Supervisor = u2.UID";