Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Consulta a 2 tablas distintas para extraer 2 datos de una tercera y reemplazar ncampo

Estas en el tema de Consulta a 2 tablas distintas para extraer 2 datos de una tercera y reemplazar ncampo en el foro de Mysql en Foros del Web. Hola a tod@s, os planteo mi problema: Tengo 3 tablas: TABLA A "usuarios" -> id, id_smf ... TABLA B "canales_usuarios" : id, id_propietario, id_sucesor ... ...
  #1 (permalink)  
Antiguo 06/11/2013, 20:28
Avatar de Davidlig  
Fecha de Ingreso: diciembre-2004
Ubicación: Pontevedra
Mensajes: 4
Antigüedad: 19 años, 4 meses
Puntos: 0
Consulta a 2 tablas distintas para extraer 2 datos de una tercera y reemplazar ncampo

Hola a tod@s, os planteo mi problema:

Tengo 3 tablas:
TABLA A "usuarios" -> id, id_smf ...

TABLA B "canales_usuarios": id, id_propietario, id_sucesor ...

TABLA C "tabla_usuarios_SMF": id_member, real_name ...

Omito el resto de los campos porque no es relevante para la consulta.


lo que me interesa es extraer el real_name (tabla_usuarios_SMF) partiendo desde el id_propietario* y id_sucesor* (canales_usuarios) simultaneamente en una misma consulta para luego volcarlo a una matriz (PHP).

* El id que se almacena en esos campos es el id de la tabla usuarios que en ella está el id_smf, es decir, necesitaría la siguiente consulta para extraer uno de los real_name:
Código:
SELECT real_name FROM canales_usuarios
LEFT JOIN usuarios ON canales_usuarios.id_propietario = usuarios.id
LEFT JOIN tabla_usuarios_SMF ON usuarios.id_smf = tabla_usuarios_SMF.id_member
WHERE canales.id = <num>;
Ahí va mi pregunta:
¿Es posible recuperar a la vez el real_name id_sucesor y en la salida "renombrar" el campo real_name? ¿cómo sería la consulta partiendo de los siguientes datos?

TABLA A:
| id | id_smf |
| 1 | 5 |
| 2 | 10 |

TABLA B:
| id | id_propietario | id_sucesor |
| 1 | 1 | 2 |

TABLA C:
| id_member | real_name |
| 5 | pepito |
| 10 | juanito |


Salida:
[real_name_propietario] -> pepito
[real_name_sucesor] -> juanito


PD: Lo que me interesa es hacer todo en una misma consulta (si es posible), el camino fácil ya lo se

Espero vuestra respuesta, gracias de antemano

Última edición por Davidlig; 06/11/2013 a las 20:36
  #2 (permalink)  
Antiguo 07/11/2013, 05:17
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Consulta a 2 tablas distintas para extraer 2 datos de una tercera y reempl

Seguro que hay más opciones. He tratado de evitar recorrer dos veces el listado completo de personas. aunque seguramente es más eficiente hacerlo llamando dos veces a la tabla de nombres de usuario. Bueno, esta es la primera prueba.
Código MySQL:
Ver original
  1. SELECT t1.real_name real_name_propietario, t2.real_name real_name_sucesor FROM usuarios u
  2. INNER JOIN (SELECT ca.id, real_name FROM canales_usuarios ca
  3.  INNER JOIN tabla_usuarios_SMF ta ON ca.id_smf = ta.id_member)t1
  4.  ON u.id_propietario = t1.id INNER JOIN
  5.     (SELECT ca.id, real_name FROM canales_usuarios ca INNER JOIN tabla_usuarios_SMF ta ON ca.id_smf = ta.id_member)t2
  6.       ON u.id_sucesor = t2.id

Última edición por jurena; 07/11/2013 a las 05:29
  #3 (permalink)  
Antiguo 07/11/2013, 05:30
Avatar de Davidlig  
Fecha de Ingreso: diciembre-2004
Ubicación: Pontevedra
Mensajes: 4
Antigüedad: 19 años, 4 meses
Puntos: 0
Respuesta: Consulta a 2 tablas distintas para extraer 2 datos de una tercera y reempl

A la noche pruebo y te comento, muchísimas gracias ;)

Etiquetas: campo, distintas, join, php, reemplazar, select, tabla, tablas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:04.