PHP + Mysql Select de multiples tablas

NeB1

Jejeje, sigo igual de verde en mysql como siempre.

Tengo dos tablas:

fabricante -> id, nombre

simulador -> id, idFabricante, nombre

Correctamente relacionadas.

ahora hago la siguiente consulta

$simQuery=mysql_query("SELECT fab.nombre,fab.id, sim.nombre, sim.id, sim.idFabricante FROM (fabricante AS fab, simulador AS sim) WHERE fab.id=sim.idFabricante ORDER BY sim.idFabricante ASC, sim.id ASC");

y en PHP recojo el resultado haciendo un $simInfo=mysql_fetch_array($query);

pues bien, el array resultante tiene la siguiente particularidad:

  $simInfo=array( '1' => '1',
                        '2' => 'Genera Electrics',
                        '3' => '3',
                        'id'=> '3',
                        '4' => 'monoeje',
                        'nombre'=>'monoeje',
                        '5' =>'1',
                        'idFabricante' => '1');

Es decir, la parte associativa del array se ha sobreescrito porque ambas tablas tienen 2 columnas con el mismo nombre (id y nombre).

si hago mysql_fetch_assoc solo me devuelve 3 resultados, evidentemente si hago mysql_fetch_row me devuelve los 5. Pero claro, me interesa acceder a los resultados asociativamente.

Alguien sabe alguna forma de evitar esto sin cambiar el formato de la tabla?

Elektr0_ddr

Haciendo:

SELECT fab.nombre as FabNombre,fab.id as FabId, sim.nombre as SimNombre, sim.id as SimId, sim.idFabricante as SimIdFabricante FROM ....

Así los nombre son diferentes para cada columna, supongo que así no habra problema

yusukorz

No se si lo entendí bien, pero si haces un while($row = mysql_fetch_array($query)) y dentro de este while, pillas los valores con $row['nombre_campo'] ?

Si hay dos campos iguales poner un alias en el select tipo : select tabla1.id AS tabla1_id,tabla2.id AS tabla2

edit: vale, lo de los alias se me adelantaron, que hice un pequeño script de prueba para ver si era así que no me acordaba xD

NeB1

ahora lo pruebo, thx!

LiKuM

¿Por qué os complicais tanto con las consultas amigos?

mysql_query("SELECT fab.id, fab.nombre, sim.id, sim.nombre, sim.idFabricante FROM fabricante fab, simulador sim WHERE fab.id = sim.idFabricante ORDER BY sim.idFabricante, sim.id ASC");

*Es que veo que se estila mucho poner AS y `` no complicarse amigos.

PiradoIV

Hombre, respecto a delimitar los campos con ` y ' es imprescindible por seguridad, lo de AS es mucho mejor para leer/reutilizar el código.

Escribir bien el código no es complicarse la vida, ¡todo lo contrario!.

Usuarios habituales

  • PiradoIV
  • LiKuM
  • NeB1
  • yusukorz
  • Elektr0_ddr