Yo creo que el problema aquí es más con PHP que con la base de datos. Tienes dos campos que se llaman "name" y los drivers que hay de MySQL en PHP tipicamente sobreescriben el valor en la columna repetida, no expanden la columna a un arreglo que contenga todos los valores de la columna con el mismo nombre. Hasta donde yo se, no hay forma de cambiar este comportamiento. Por eso necesitas usar un ALIAS con "AS" para evitar la colisión de las columnas.
O simplemente usas los indices en lugar de los nombres de las columnas:
$results[0][1]; //Ramon
$results[0][2]; //Miguel'
e ignoro como no te devuelve error con $results[0][1]['name']
Devuelve un warning, pero no es un error fatal.
Advertencia
Escribir en un índice fuera del rango rellenará el string con espacios. Los tipos que no sean integer son convertidos a integer. Los índices ilegales emiten un error de nivel E_NOTICE. Los índices negativos emiten un error de nivel E_NOTICE en la escritura, aunque se lea un string vacío. Sólo se emplea el primer carácter de un string asignado. La asignación de un string vacío asigna un byte NULL.
https://www.php.net/manual/es/language.types.string.php#language.types.string.substrEdit: La documentación en español discrepa con la de ingles, en la que dice que es E_WARNING. Probablemente un cambio en alguna version.