Ver Mensaje Individual
  #2 (permalink)  
Antiguo 12/05/2012, 17:15
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Problema Insert

Es un conflicto mezclado entre MySQL y PHP.
El problema básico es que no reconoce los encabezados de las columnas devueltas, porque la tabla referenciada no va incluida en ellos.
Me explico.
Si puedes ver tu propia muestra, lo que tienes es esto:


Si te fijas, MySQL no devuelve los nombres de los campos con la tabla que se referencia en el SELECT ("u." y "mdl_groups"). Esto ocurre con cualquiera de los DBMS que puedes usar, es un comportamiento estándar y no implica error alguno.
Lo que algunos DBMS hacen (Oracle), es que al segundo campo le van agregando un sufijo numerado cuando el nombre del campo se repite (id, id1, id2, etc.). Pero no es el caso de MySQL.
Esto hace que no puedas invocar a esos campos por el mismo nombre aparente del SELECT, sino por el que MySQL devuelve, que en este caso está duplicado.

¿Cuál es la solución?
La que puedes usar es crearle alias en el SELECT.
La correcta sería no usar nombres de campos iguales en diferentes tablas, sino crearlos de modo que se pueda identificar de forma simple a qué tabla pertenecen (id_users, idEmpleados, idPais, etc.). Eso es lo que se considera buena práctica en BBDD.

Código MySQL:
Ver original
  1.     u.id user_id,
  2.     mdlgr.id mdlgr_id
  3.     moodle.mdl_groups mdlgr...

Por ciero, el orden de las tablas parece estar equivocado. Primero debe ir la tabla base, que en principio parecería ser mdl_user y no mdl_groups. Pero eso depende de sobre qué quieres haerla, si sobre los grupos, o sobre los usuarios.

Eso lo sabes tu.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)