Стига да използвате *
заместващ знак, ще откриете, че колони със същото име ще презапишат същите ключове във вашия асоциативен масив.
Трябва да дадете псевдоними на колони на колони от поне една от таблиците:
select t1.*, t2.col1 as t2col1, t2.col2 as t2col2, ...
from table as t1 LEFT JOIN table as t2 ON t1.id=t2.rank
Или пък можете да използвате заместващия знак, но да извлечете реда като порядков масив:
$row = mysql_fetch_array($result, MYSQL_NUM);
echo $row[4];
Относно вашия коментар:SQL има само *
заместващ знак, който означава "всички колони от дадена таблица, с техните естествени имена." Трябва изрично псевдоним на колони, на база колона по колона.
Изключение:Ако използвате SQLite, има pragma full_column_names
опция, която кара набора от резултати да връща квалифицирани имена на колони, така че можете да използвате *
но ключовете се връщат с префикс с псевдонимите на таблицата. Това е специфичен за SQLite и нестандартен SQL.