Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: Leguim en 20 Septiembre 2019, 20:54 pm



Título: [Pregunta]: INNER JOIN de dos campos
Publicado por: Leguim en 20 Septiembre 2019, 20:54 pm
Hace una o dos semanas no me acuerdo bien había preguntado sobre como podía "entrelazar datos" dentro de una consulta (nunca me acuerdo como se llama esto así que digamos.. "entrelazar")

Código
  1. "S*ELECT U.id_user, U.name, C.id_user FROM users U INNER JOIN comments C ON U.id_user = C.id_user WHERE (etcétera)"
  2.  

Hay lo estoy haciendo con un sólo dato un (ID de usuario en este caso esa id será el ID del autor del comentario)
Pero en casos donde requiero dos o más datos había preguntado y me dijeron que poniendo un AND serviría (Lo cual creo que sirvió porque no me arrojo más errores)

Código
  1. "S*ELECT U.id_user, U.name, C.id_user, C.id_adm FROM users U INNER JOIN comments C ON U.id_user = C.id_user AND U.id_user = C.id_adm WHERE (etcétera)"
  2.  

La pregunta sería como accedo a los diferentes datos es decir...

Código
  1. $datos = la_consulta;
  2.  
  3. if(!empty($datos))
  4. {
  5.      foreach($datos as $datos_foreach)
  6.     {
  7.           echo 'Nombre del usuario = '.$datos_foreach['name'];
  8.           echo 'Nombre del admin = '.$datos_foreach['name'];
  9.           // Imagino que me devolverá el mismo valor para cada echo y no debería ser así ya que el id_adm tiene un id totalmente diferente a el id_user
  10.     }
  11. }
  12.  

No hace falta que intenten encontrar la lógica a esto de por que utilizo un id_adm en un ejemplo de comentarios o cosas de ese tipo ya que todo el código sólo sirve de ejemplo y para poder meterlos en contexto. Gracias.



Mod: Temas sobre Bases de Datos van al subforo de Bases de Datos.


Título: Re: [Pregunta]: INNER JOIN de dos campos
Publicado por: engel lex en 20 Septiembre 2019, 21:01 pm
intentaste ejecutar el query antes?

pudes perfectamente ejecutar el query obtener los datos y usar printr o var_dump para ver el contenido... pero de antemano te digo

Citar
U.id_user, U.name, C.id_user, C.id_adm

tienes 2 veces el mismo identificador, mysql te dirá que es una consulta ambigua... ya que es imposible retornar 2 resultados con el mismo nombre (por las razones que ya notaste) en ese caso tendrás que hacer algo como

Citar
U.id_user AS UUser, U.name, C.id_user AS Cuser, C.id_adm


Título: Re: [Pregunta]: INNER JOIN de dos campos
Publicado por: Leguim en 20 Septiembre 2019, 21:23 pm
intentaste ejecutar el query antes?

pudes perfectamente ejecutar el query obtener los datos y usar printr o var_dump para ver el contenido... pero de antemano te digo

tienes 2 veces el mismo identificador, mysql te dirá que es una consulta ambigua... ya que es imposible retornar 2 resultados con el mismo nombre (por las razones que ya notaste) en ese caso tendrás que hacer algo como


No creo haber entendido, es decir si decís por que los dos identificadores son "id_user" para eso use los alias tanto U. como C.

En otras consultas donde uso estos alias funciona correctamente la consulta. (aunque no se si te referías a eso)




Como sería para acceder a los diferentes datos, algo como..?
resultados[0] ['name'] y resultados[1] ['name']



Mod: Prohibido hacer doble post. Usar el botón "Modificar".


Título: Re: [Pregunta]: INNER JOIN de dos campos
Publicado por: engel lex en 21 Septiembre 2019, 03:15 am
has un var_dump... experimenta y ve el resultado por ti mismo! XD


Título: Re: [Pregunta]: INNER JOIN de dos campos
Publicado por: Leguim en 21 Septiembre 2019, 03:56 am
has un var_dump... experimenta y ve el resultado por ti mismo! XD

Okay voy a ver gracias!