复杂SQL查询...返回变量的名称

时间:2010-03-25 01:19:53

标签: php sql mdb2

对不起,对于大多数人来说,我确信这是一个基本问题,但是我遇到了来自不同表中的表列的问题,这些表具有相同的名称,并尝试从同一查询中的两个表中进行选择

好的,这是我的代码:

$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,name

在运行查询之后,我稍后使用foreach循环遍历结果:

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

问题是mail_lists中的“name”列引用了列表的名称,而memberlist中的“name”列引用了该成员的名称。

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

或者我只需要进行两次单独的查询?

1 个答案:

答案 0 :(得分:3)

为什么不能简单地使用:

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

然后区分namel_name


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

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

仍然区分这两个名字。使用显式列规范,您可以为每列添加as子句,以提供唯一的名称。