2013-10-24 92 views
0

我需要對MySQL表上的同一個字段進行查詢,但使用不同的參數。這是我的查詢。出現的問題是,MySQL說用戶名是不明確的。MySQL說這個列不明確

SELECT projects_id, 
projects_users_id,projects_companies_id,projects_name, 
projects_description,project_registered_date, 
projects_users_id_register, 
users.users_name as userInCharge,companies.companies_name as company, 
users.users_name as user_register FROM projects 
LEFT JOIN users as userInCharge ON (users_id = projects_users_id) 
LEFT JOIN users as register ON (users_id=projects_users_id_register) 
LEFT JOIN companies ON (companies_id = projects_companies_id) ORDER BY projects_id DESC 

我的目標是獲得項目負責人和註冊該項目的人員的ID。我該怎麼做呢?

+0

您正在重複users.users_name選擇 – Mihai

回答

2

你的不確定性,是因爲這些LEFT JOIN條款而產生的register所以使用這些名稱:

LEFT JOIN users as userInCharge ON (users_id = projects_users_id) 
LEFT JOIN users as register ON (users_id=projects_users_id_register) 

您需要指定users_id是來自(是的 - 我知道他們來自同一個表的時候,但SQL是有點慢,有時)嘗試:

LEFT JOIN users as userInCharge ON (userInCharge.users_id = projects_users_id) 
LEFT JOIN users as register ON (register.users_id=projects_users_id_register) 
+0

這是它。謝謝! – idungotnosn

+1

同樣在select中,users.users_name被使用兩次而沒有別名 – mucio

+1

它們根本不是「同一個地方」。其中一個來自一個用戶子集,另一個來自完全不同的用戶子集。沒有歧義,SQL拒絕回答這個問題是完全正確的,因爲加入表格兩次使其成爲2個地方,而不是1。 –

0

使用表別名而不是users.users_name。

而且還在加入。

0

您與users表合併爲userInCharge當你指定列

userInCharge.users_name as userInCharge 
register.users_name as user_register 

,而不是

users.users_name as userInCharge 
users.users_name as user_register