Это мой запрос:
$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)?


На самом деле это очень мало связано с CodeIgniter и во многом связано с тем, как mysql_fetch_assoc предоставляет результаты запроса. Решение состоит в том, что вы должны переименовать столбцы внутри запроса, используя "AS", например
select type_of_source.description as type_of_source_description, origin.descripotion as origin_descripotion from ....
Я не вижу причин, по которым этого не должно быть, «AS» - это стандартный синтаксис SQL, и я готов поспорить, что функции PHP pg_ * работают очень похоже на функции mysql_ *.
Просто укажите псевдонимы столбцов в операторе SELECT. Не изменяйте вашу базу данных. Стандартная практика - использовать псевдонимы в ваших операторах SQL.
Из документации PostgreSQL для «ВЫБРАТЬ»:
«Используя предложение AS output_name, для выходного столбца можно указать другое имя».
в моем случае у меня много запросов без AS, и переименовать все было бы очень болезненно. Есть какой-либо способ сделать это ?
Я рекомендую не использовать этот способ, вместо этого вы можете переименовать выходные столбцы с помощью «AS».
используя postgres, все то же самое?