簡體   English   中英

mysql select 查詢從同一個用戶名表中調用名稱的多個 ID

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM