我有一个简单的左连接查询。
SELECT e.employee_id as employee
, e.badge_id as badge
, e.first_nm as first
, e.last_nm as last
, e.work_phone as work_ph
, e.mobile_phone as mobile_ph
, e.manager_id as man_id
, e.title_id as titl_id
, e.username as user
, e.start_dt as start
, m.employee_id as memp_id
, m.last_nm as m_last
, m.first_nm as m_first
, t.title_nm as titl_nm
FROM employee e
left join employee m
on e.manager_id = m.employee_id
left join title t
on e.title_id = t.title_id
WHERE e.employee_id = 1
如果我像上面一样使用列别名,查询工作正常。但是,如果我不使用别名,则不会返回某些值。例如,如果我没有给列添加别名,则以下内容返回空格。
e.first_nm as first //returns "Robert"
e.first_nm //returns ""
e.first_nm as first_nm //returns "" (alias matches column name)
在同一个查询中,
e.middle_nm //will return "P"
无论是否有别名。我感到困惑。
我已经给了表格别名,我在列名中使用了表别名,所以不应该有任何不明确的列名。
任何想法都将不胜感激。 谢谢,
罗布
答案 0 :(得分:0)
你有两列同名first_nm
,可能PDO不知道返回你的代码然后返回简单的“”。虽然他们在记录中有不同的表,但他们有相同的名字......你看到了问题吗?
答案 1 :(得分:0)
你有两列同名first_nm
,mysql知道如何将它们全部返回,然后为两者返回简单的“first_nm”。然后PDO必须将它们分配给数组成员,将字段名称作为数组键。只有一种方式,比如这个
$row['first_nm'] = first col;
$row['first_nm'] = second col;
如果您尝试查看$ row,您会找到多少条目?
因此,您必须使用FETCH_ROW或为您的字段指定不同的名称。它既不是mysql也不是PDO - 它只是事情的运作方式。