快速提问。感觉像个菜鸟,但还没有找到正确的语法。
有 3 个表。
T1- 评估 ID(自动增量) 检查员ID, 助理ID, 植物名
T2- 用户ID(自动增量), 用户名, 姓名
T3- plantID(自动增量) 植物名
基本上我想要一个与 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)。只需为两者使用相同的名称即可。
我应该使用对服务器的什么调用来返回两个不同的名称。任何帮助将不胜感激
最佳答案
首先要做的事情是:如果您想从评估表中进行选择并使用其他表扩充结果集,请考虑使用 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 */
);
关于php - mysql select query for multiple ID's that call name 来自同一个用户名表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7084188/