Contanto que você esteja usando o
*
curinga, você encontrará colunas com o mesmo nome que substituirão as mesmas chaves em sua matriz associativa. Você deve fornecer aliases de coluna para colunas de pelo menos uma das tabelas:
select t1.*, t2.col1 as t2col1, t2.col2 as t2col2, ...
from table as t1 LEFT JOIN table as t2 ON t1.id=t2.rank
Ou então você pode usar o curinga, mas buscar a linha como uma matriz ordinal:
$row = mysql_fetch_array($result, MYSQL_NUM);
echo $row[4];
Re seu comentário:SQL tem apenas o
*
curinga que significa "todas as colunas de uma determinada tabela, por seus nomes naturais". Você deve aliasar as colunas explicitamente, coluna por coluna. Exceção:se você usa SQLite, há um
pragma full_column_names
opção que faz com que o conjunto de resultados retorne nomes de coluna qualificados, para que você possa usar *
mas as chaves voltam prefixadas com os aliases da tabela. Esse é um SQL específico e não padrão do SQLite.