Сложный 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');

Список участников таблицы имеет следующие столбцы: идентификатор, адрес электронной почты, список, пол, имя

и таблица mail_lists имеет следующие столбцы: id, name

После выполнения запроса я позже перебираю результаты с помощью foreach, например, так:

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

Проблема заключается в том, что столбец "имя" в mail_lists ссылается на имена в списке, а столбец "имя" в memberlist ссылается на имя члена.

Когда я позже получу доступ к $l->name (в пределах foreach), я получу m.name или l.name? Кроме того, как мне получить доступ к другому?

Или мне просто нужно сделать два отдельных запроса?

1 ответ

Решение

Почему вы не можете просто использовать:

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

а затем различать name а также l_name?


И это вопрос стиля, поэтому другие могут не согласиться, но я никогда не использую * в запросах, предпочитая явные спецификации столбцов. Это на самом деле не проблема в вашем случае, если вы не хотите делать:

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

и до сих пор различают два имени. С явными спецификациями столбцов, вы можете добавить as предложение для каждого столбца, чтобы дать уникальные имена.

Другие вопросы по тегам