查询同一个用户名表中的多个ID's


mysql select query for multiple ID's that call name from same username table

快速提问。感觉自己像个新手,但还没有找到合适的语法。

有3张表

T1 -AsessessmentID(自动增加)inspectorID,assistantID,植物名称

T2 -UserID(自动增加),用户名、名称

T3 -plantID(自动增加)PlantName

基本上我想有一个php/mysql表,这是非常类似于T1,但不是列出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.p antassistid)。只要保持两个名称相同即可。

我应该使用什么对服务器的调用来返回两个不同的名称。如有任何帮助,不胜感激

首先:如果您希望从评估表中进行选择,并使用其他表来增加结果集,请考虑使用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 */
);

我不是百分之百明白你的意思,但我认为你想要的是:

我将重写查询以使用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)