Как вывести данные из таблиц с одинаковыми именами столбцов в CodeIgniter? - PullRequest
2 голосов
/ 09 октября 2008

Это мой запрос:

$query = $this->db->query('
    SELECT archives.id, archives.signature, type_of_source.description, media_type.description, origin.description 
    FROM archives, type_of_source, media_type, origin                                                             
    WHERE archives.type_of_source_id = type_of_source.id                                                          
    AND type_of_source.media_type_id = media_type.id                                                              
    AND archives.origin_id = origin.id                                                                            
    ORDER BY archives.id ASC
');

а как вывести результат? Это работает, но получает только последнее описание (origin.description):

foreach ($query->result_array() as $row)
{
    echo $row['description'];
}

Это не работает:

foreach ($query->result_array() as $row)
{
    echo $row['type_of_source.description'];
}

Или я должен переименовать столбцы (например, type_of_source_description)?

Ответы [ 3 ]

5 голосов
/ 09 октября 2008

Это на самом деле имеет мало общего с CodeIgniter и во многом связано с тем, как mysql_fetch_assoc предоставляет результаты запроса. Решение состоит в том, что вы должны переименовать столбцы внутри запроса, используя «AS», например,

select type_of_source.description as type_of_source_description, origin.descripotion as origin_descripotion from ....
2 голосов
/ 09 октября 2008

Просто псевдоним столбцов в инструкции SELECT. Не изменяйте свою базу данных. Стандартная практика заключается в использовании псевдонимов в ваших операторах SQL.

Из документации PostgreSQL для "SELECT":

"Используя предложение AS output_name, можно указать другое имя для выходного столбца."

PostgreSQL SELECT

1 голос
/ 14 ноября 2008

Я рекомендую не использовать этот способ, вместо этого вы можете переименовать выходные столбцы с "AS".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...