2012-06-10 34 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";