MySQL 结果未根据我的查询显示


mysql result not displaying based on my query

我有一个名为add_project的表:

+------------+---------+-------------------+--------------+|project_id |user_id |project_status_id |project_name |+------------+---------+-------------------+--------------+|         1 |      1 |                3 |美国广播公司 ||         2 |      1 |                0 |定义 ||         3 |      1 |                1 |XYZ ||         4 |      1 |                3 |LMN ||         5 |      1 |                0 |TRS ||         6 |      1 |                3 |GHT |+------------+---------+-------------------+--------------+

在此表上,管理员添加新项目。管理员user_id是 1,所以这很常见。 project_status_id指示该项目的完成状态(0=新建,1=工作,3=已完成(。

我还有另一张名为asign_project的表:

+----------+------------+---------+|asign_id |project_id |user_id |+----------+------------+---------+|       1 |         1 |      5 ||       2 |         5 |      9 ||       3 |         2 |      5 ||       4 |         4 |      5 ||       5 |         6 |      9 ||       6 |         3 |      9 |+----------+------------+---------+

在此表的此处,管理员将项目分配给不同的用户。

现在我想要的是找到每个用户完成了多少个已完成的项目。如您所见,project_id(1,4) 已完成 user_id=5 .

所以我的问题是如何获得这个值?

以下是我编写的查询:

SELECT *
FROM   asign_project, add_project
WHERE  asign_project.project_id = add_project.project_id 
   AND project_status_id='3' 
   AND user_id='5'

但它正在显示:

#1052 - Column 'user_id' in where clause is ambiguous

在sqlfiddle上看到它。

等待您的回复。

user_id属于哪个表? 你应该添加 TABLE_XXX.user_id.

  Select * FROM asign_project, add_project 
       WHERE 
          asign_project.project_id = add_project.project_id 
       AND 
          project_status_id='3' 
       AND 
          asign_project.user_id='5';

我想两个表都有user_id列,所以你需要在表名上指定更多。

Select 
    * 
FROM 
    asign_project, add_project 
WHERE 
    asign_project.project_id = add_project.project_id 
AND 
    project_status_id='3' 
AND 
    asign_project.user_id='5';

使用了这个

将user_id替换为 add_project.user_id

Select 
  * 
FROM 
  asign_project, add_project 
WHERE 
    asign_project.project_id = add_project.project_id 
AND 
    project_status_id='3' 
AND 
    add_project.user_id='5'

此错误基本上意味着您从中选择的两个表具有相同的列名。

WHERE 子句中,您只需要指定要用于获取数据过滤器的表名。

例:

Select * 
FROM 
   asign_project, add_project 
WHERE 
   asign_project.project_id = add_project.project_id 
AND 
  asign_project.project_status_id='3' 
AND
  asign_project.user_id='5'

所做的只是将 WHERE 子句中的user_id替换为 assign_project.user_id(假设 assign_project 是您想要使用的正确表(