2013-10-24 53 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