2011-08-16 30 views
1

快速問題。感覺像一個noob,但還沒有找到正確的語法。mysql爲多個ID選擇查詢,從同一用戶名錶中調用名稱

有3個表格。

T1- AsessessmentID(自動增量) inspectorID, assistantID, 廠名

T2- 用戶ID(自動增量), 用戶名, 名

T3- plantID(自動增量) PlantName

基本上我想要一個非常類似於T1而不是l的php/mysql表是ID的我想要的名字。下面有我的電話,到目前爲止:

SELECT DISTINCT a.AssessmentID, u.Name, a.PlantAssistID, p.PlantName 
       FROM assessmentscores AS a, user AS u, plant AS p 
       WHERE u.userID=a.InspectorID AND u.Name='$name' AND p.PlantID=a.Plant 

這可以作爲u.Name會給我對檢查員的名字,但我無法弄清楚如何調用第二(a.PlantAssistID)。只要保持兩個同名。

我應該用什麼來調用服務器來返回兩個不同的名稱。任何幫助,將不勝感激

+1

這個問題是微渺;向我們提供預期結果的例子可能會有很大改進。 –

回答

2

一件事:如果你想從評估表中選擇並使用其他增加的結果集表,請考慮使用LEFT JOIN。如果您希望獲得更具限制性的結果,只返回與現有用戶實際關聯的評估,請改爲使用INNER JOIN。以下示例使用LEFT JOIN

不知道這是否是你想要的究竟是什麼,但你可以嘗試:

SELECT a.AssessmentID as a_id, u.Name as u_name, a.PlantAssistID as a_plantassistid, p.PlantName as p_plantname, uass.Name as u_ass_name 
    FROM assessmentscores a 
    LEFT JOIN user u ON u.UserID = a.AssessmentID 
    LEFT JOIN plant p ON p.PlantID = a.Plant 
    LEFT JOIN user uass ON uass.UserID = a.PlantAssistentID 

結果:

array(
    'a_id'   => int /* AssessmentID */ 
    'u_name'   => string /* User name */ 
    'a_plantassistid' => int /* Assessment.PlantAssistID */ 
    'p_plantname'  => string /* Plant name */ 
    'u_ass_name'  => string /* The user name of the user with assistent_id */ 
); 
2

我不是100%肯定,我跟着你,但這裏是我想你想:

我會重寫查詢,使用JOIN,因爲可以更容易閱讀

SELECT a.AssessmentID, u.Name, a.PlantAssistID, p.PlantName, u2.Name as AssisantName 
FROM user AS u 
    JOIN assessmentscores AS a ON u.UserID = a.InspectorID 
    JOIN plant AS p ON p.plantID = a.Plant 
    JOIN user as u2 ON u2.UserID = a.assistantId 
WHERE u.Name='$name' 

這裏的關鍵是要重新加入的用戶表,但給它一個不同的別名(U2這裏)第一

+0

真棒,正是我需要的。感謝你,併爲你提供十個美食 – Sedaition

相關問題