2012-08-29 2 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' 

(я не хочу, чтобы создать представление, а также использовать псевдонимы, или подзапросов)

Возможно ли это? ЕСЛИ да как?

Заранее благодарю вас за помощь.

Чтобы дать более подробную информацию:

Я хранения БД запросов, основной таблицы и столбцы в таблице. Затем столбцы встроены в массив, и на основе этого массива я создаю запрос.

Бывают случаи, когда столбцы являются подзапросами, иногда они являются только ячейками таблицы, а иногда они представляют собой значения из двух или более столбцов

Моя проблема заключается в том, что после построения запроса динамически, я должен показать его, но если массив, содержащий имена заголовков определяется как table.colname,

print $row[$array[column_name]] 

вычисляет print $row[persons.name]

Но индекс, который генерирует сервер mysql, является «имя», а не «person.name»

, который также должен работать, но если в запросе есть два имени, в нем это неоднозначно, и я не вижу возможность передать условие 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

Смежные вопросы