0

我有一张桌子叫add_project

+------------+---------+---------+------ --------+
| 项目 ID | 用户 ID | project_status_id | 项目名称 |
+------------+---------+---------+------ --------+
| 1 | 1 | 3 | 美国广播公司 |
| 2 | 1 | 0 | 定义 |
| 3 | 1 | 1 | xyz |
| 4 | 1 | 3 | lm |
| 5 | 1 | 0 | 回复 |
| 6 | 1 | 3 | 右 |
+------------+---------+---------+------ --------+

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

我还有另一张桌子叫asign_project

+---------+------------+---------+
| 分配ID | 项目 ID | 用户 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上查看。

等待你的回复。

4

4 回答 4

1

我猜这两个表都有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';
于 2013-09-27T08:47:08.247 回答
1

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';
于 2013-09-27T08:50:10.607 回答
0

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

在您的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'

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

于 2013-09-27T08:46:55.300 回答
0

用了这个

将 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'
于 2013-09-27T08:46:58.377 回答