[英]mysql select query for multiple ID's that call name from same username table
快速提問。 感覺像個菜鳥,但還沒有找到正確的語法。
有3張桌子。
T1- AssessmentID(auto Incr) inspectorID, assistantID, 工廠名稱
T2-用戶ID(自動增量),用戶名,名稱
T3-plantID(auto Incr) PlantName
基本上我想要一個與 T1 非常相似的 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)。 只是保持兩者的名稱相同。
我應該使用什么調用服務器來返回兩個不同的名稱。 任何幫助,將不勝感激
我不是 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)
首先要做的事情:如果您想從評估表中獲取 select 並使用其他表增加結果集,請考慮使用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 */
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.