簡體   English   中英

mysql結果不會根據我的查詢顯示

[英]mysql result not displaying based on my query

我有一個名為add_project的表:

+------------+---------+-------------------+--------------+
| project_id | user_id | project_status_id | project_name |
+------------+---------+-------------------+--------------+
|          1 |       1 |                 3 | abc          |
|          2 |       1 |                 0 | def          |
|          3 |       1 |                 1 | xyz          |
|          4 |       1 |                 3 | lmn          |
|          5 |       1 |                 0 | trs          |
|          6 |       1 |                 3 | ght          |
+------------+---------+-------------------+--------------+

在此表中,admin添加新項目。 admin user_id為1,因此它很常見。 project_status_id表示該項目的完成狀態(0 = new,1 = working,3 = completed)。

我有另一個名為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列,因此您需要在表名中更多地指定。

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屬於哪個表? 你應該添加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';

此錯誤基本上意味着您選擇的兩個表具有相同的列名稱。

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是您要使用的正確表)

用過這個

將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'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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