Как вывести данные из таблиц с одинаковыми именами столбцов в CodeIgniter?

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

$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)?

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
2
0
4 153
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

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

select type_of_source.description as type_of_source_description, origin.descripotion as origin_descripotion from ....

используя postgres, все то же самое?

meleyal 09.10.2008 17:10

Я не вижу причин, по которым этого не должно быть, «AS» - это стандартный синтаксис SQL, и я готов поспорить, что функции PHP pg_ * работают очень похоже на функции mysql_ *.

pilsetnieks 09.10.2008 17:14

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

Из документации PostgreSQL для «ВЫБРАТЬ»:

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

ВЫБОР PostgreSQL

в моем случае у меня много запросов без AS, и переименовать все было бы очень болезненно. Есть какой-либо способ сделать это ?

Luís Almeida 12.09.2018 19:32

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

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