0

对不起,我确定对你们大多数人来说是一个基本问题,但我有一个问题,来自不同表的表列彼此同名,并试图从同一个查询中的两个表中进行选择。

好的,这是我的代码:

$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');

表 memberlist 具有以下列:id、email、list、sex、name

并且表 mail_lists 具有以下列: id, name

运行查询后,我稍后使用 foreach 循环遍历结果,如下所示:

foreach ($l_list as $l){ //blahblah }

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

当我稍后访问 $l->name(在 foreach 中)时,我会得到 m.name 还是 l.name?此外,我如何访问另一个?

还是我只需要做两个单独的查询?

4

1 回答 1

3

为什么不能简单地使用:

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

然后区分namel_name


这是一个风格问题,所以其他人可能不同意,但我从不在查询中使用*,倾向于更喜欢明确的列规范。除了您想这样做之外,这实际上不是您的问题:

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

并且仍然区分这两个名称。使用显式列规范,您可以as向每列添加一个子句,以赋予唯一的名称。

于 2010-03-25T01:22:31.197 回答