2012-08-29 35 views
0

我在构建一些多维查询时遇到了一些困难。左加入选择后查询结果标题

我的问题是,例如这个查询:

SELECT 
    persons.name, 
    contacts.email 
FROM 
    persons 
LEFT JOIN 
    contacts ON persons.person_ID = contacts.person_ID 
LIMIT 0,10; 

返回2列,因为它应该,1列的名称:“名称”和名为“邮箱”的另一列。

但我想这回我的标题的方式是这样的:

'persons.name' 

'contacts.email' 

(我不想创建一个视图,也不能使用别名,或子查询)

这有可能吗?如果是,如何?

非常感谢您的帮助。

透露更多的细节:

我存储查询数据库,主表,表中的列。然后将这些列构建到一个数组中,并基于该数组构建查询

有些情况下,列是子查询,有时它们只是表格单元格,有时它们是2列或更多列的值

我的问题是动态创建的查询后,我要显示它,但是如果包含标题名称的阵列被定义为table.colname,

print $row[$array[column_name]] 

评估为print $row[persons.name]

但是mysql服务器生成的索引是'name'而不是'persons.name'

也应该可以工作,但是如果查询有2个名字,那么这个名字是模棱两可的,我看不到运行查询后传递where条件的选项。

这是我不希望在第一时间使用别名的原因

+5

你为什么不想使用别名? – Ryan

+3

别名将是正确的解决方案。 – Matt

+0

如果你不想使用别名,那么给这些名称列表没有。反而使用骆驼套管或下划线 –

回答

1

您可以使用“AS”关键字给一个别名

SELECT persons.name as persons.name, contacts.email as contacts.email 
FROM presons 
LEFT JOIN contacts ON persons.person_ID=contatcs.person_ID 
LIMIT 0,10; 
+0

谢谢你的答案,但正如我指定它在我的原始文章中,我不想使用别名给出的原因 – user1248047

+0

我不是你有什么问题,但如果你解释你的原始问题,可能有其他解决方案。 –

1

尝试使用别名

SELECT persons.name AS 'person.name', contacts.email AS 'contacts.email' FROM presons 
LEFT JOIN contacts ON persons.person_ID=contatcs.person_ID 
LIMIT 0,10; 
+0

谢谢你的回答,但正如我在我原来的文章中指出的那样,我不想因为某些原因使用别名 – user1248047