2010-03-25 96 views
0

对不起,我敢肯定,对于大多数人来说,这是一个基本问题,但是我有一个来自不同表格的表格列,它们具有相同的名称,试图从同一查询中的两个表中进行选择。复杂的SQL查询...返回的变量的名称

好了,这是我的代码:

$q_value = $mdb2->quote($_POST['query']); 
$field = $_POST['field']; 
$sql = "SELECT m.*, l.name FROM memberlist m, mail_lists l 
     WHERE m.$field=$q_value 
     AND l.id = m.list 
     ORDER BY m.id"; 
$l_list = $mdb2->queryAll($sql, '', 'MDB2_FETCHMODE_ASSOC'); 

表会员有以下栏目: ID,电子邮件列表,性别,姓名

和表mail_lists有以下栏目:

: ID,名称

运行查询,我后来通过与一个foreach结果像这样循环后

问题是,mail_lists中的列'name'是指列表的名称,而memberlist中的列'name'是指成员的名称。

当我以后访问$ l-> name(在foreach中)时,我会得到m.name还是l.name?此外,我如何访问其他人?

或者我只需要做两个单独的查询?

回答

3

为什么你不能简单地用:

SELECT m.*, l.name as l_name FROM ... 

然后namel_name区分?


这是一个风格问题,那么其他人可能不同意,但我从来没有使用*查询,倾向于更喜欢明确的列规范。这实际上不是在你的情况比,如果你想要做的其他问题:

SELECT m.*, l.* FROM ... 

这两个名称之间仍然进行区分。通过明确的色谱柱规格,您可以为每个色谱柱添加一个as子句,以提供唯一的名称。

+0

完美! 现在我觉得自己像个真正的假人。哈哈 谢谢! – Polyonymy 2010-03-25 01:33:35