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

[SOLUCIONADO] Unir 2 tablas

Estas en el tema de Unir 2 tablas en el foro de Bases de Datos General en Foros del Web. Chicos como estan ? espero que bien jejeje tengo una tabla para noticias, que tienes titulo, contenido bla bla bla... ok, pero en ella tengo ...
  #1 (permalink)  
Antiguo 15/08/2017, 01:48
 
Fecha de Ingreso: agosto-2011
Mensajes: 87
Antigüedad: 12 años, 8 meses
Puntos: 3
Unir 2 tablas

Chicos como estan ? espero que bien jejeje

tengo una tabla para noticias, que tienes titulo, contenido bla bla bla...

ok, pero en ella tengo las columnas autor(el que creo la noticia) y autor_actualizacion(el que actualizo la noticia)

mi pregunta es:

como puedo construir la conulta SQL para obtener al mismo tiempo el autor(el que creo la noticia) y autor_actualizacion(el que actualizo la noticia) ?

puedo hacer el la union de tablas para obtener el autor o el autor_actualizacion, pero no puedo conseguir extraer ambos datos al mismo tiempo !
__________________
No le pare bola a la vida, que la vida no le para bolas a uno!
  #2 (permalink)  
Antiguo 15/08/2017, 07:18
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Unir 2 tablas

Me imagino que tendras los Id's de los autores y no el nombre cierto? porque de lo contrario no veo la complejidad, dices que tienes todo en una sola tabla, asi que si no fueran los id's entonces nada mas seria seleccionar las 2 columnas y listo jejejeje

Creo que tienes algo asi:

notas
id_nota, titulo, comentario, id_autor, id_autor_actualizacion

autores
id nombre


En ese caso la consulta quedaria como esto:

Código SQL:
Ver original
  1. SELECT t1.titulo, t1.comentario, t2.nombre AS autor_creacion, t3.nombre AS autor_acutlizacion FROM notas AS t1
  2. LEFT JOIN autores AS t2 ON (t1.id_autor=t2.id)
  3. LEFT JOIN autores AS t3 ON (t1.id_autor_actualizacion=t3.id)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 15/08/2017, 08:08
 
Fecha de Ingreso: agosto-2011
Mensajes: 87
Antigüedad: 12 años, 8 meses
Puntos: 3
Respuesta: Unir 2 tablas

asi mismo es Libras... bien por esa jajaja

es lo que me temia :( usar alias

lo que pasa es que para generar las consultas utilizo el framework codeigniter y estaba buscando una funcion de la libreria DB que me permitiera agregar un alias, pero al parecer tendre que tantear hasta que me acepte alias en JOIN jajaja

gracias de todos modos, pense que habia otra forma :(
__________________
No le pare bola a la vida, que la vida no le para bolas a uno!
  #4 (permalink)  
Antiguo 15/08/2017, 08:18
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Unir 2 tablas

Ahi si ni como ayudarte, ese tipo de consultas se hace con subqueries, y no hay otro modo a menos que uses NONSQL
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 15/08/2017, 10:08
 
Fecha de Ingreso: agosto-2011
Mensajes: 87
Antigüedad: 12 años, 8 meses
Puntos: 3
Respuesta: Unir 2 tablas

Nahh.. muchas gracias por todo libras, ya lo solucione, te pongo lo que me dijiste pero con la libreria BD de CodeIgniter.

Código PHP:
$select = array(
                
                
't1.id_noticia',
                
't1.slug_noticia',
                
't1.titulo_noticia',
                
't1.sintesis_noticia',
                
't1.fecha_noticia',
                
't1.autor_noticia',
                
't1.fecha_act_noticia',
                
't1.autor_act_noticia',
                
't2.nombre_usuario AS nombre_autor_usuario',
                
't3.nombre_usuario AS nombre_act_usuario'
                
        
);
        
        
$this->db->select($select);
        
$this->db->from("noticias AS t1");
        
$this->db->join('usuarios AS t2','t2.id_usuario = t1.autor_noticia','INNER');
        
$this->db->join('usuarios AS t3','t3.id_usuario = t1.autor_act_noticia','LEFT');
        
$this->db->where("t1.estado_noticia","0");
        
$this->db->order_by("t1.fecha_noticia","DESC"); 
me produce esto.

Código:
SELECT
    `t1`.`id_noticia`,
    `t1`.`slug_noticia`,
    `t1`.`titulo_noticia`,
    `t1`.`sintesis_noticia`,
    `t1`.`fecha_noticia`,
    `t1`.`autor_noticia`,
    `t1`.`fecha_act_noticia`,
    `t1`.`autor_act_noticia`,
    `t2`.`nombre_usuario` AS `nombre_autor_usuario`,
    `t3`.`nombre_usuario` AS `nombre_act_usuario`
FROM
    `noticias` AS `t1`
INNER JOIN `usuarios` AS `t2`
ON
    `t2`.`id_usuario` = `t1`.`autor_noticia`
LEFT JOIN `usuarios` AS `t3`
ON
    `t3`.`id_usuario` = `t1`.`autor_act_noticia`
WHERE
    `t1`.`estado_noticia` = '0'
ORDER BY
    `t1`.`fecha_noticia`
DESC
LIMIT 10
jejeje era facil al final, pense que tenia que buscar en la documentacion otra vez jajaja
__________________
No le pare bola a la vida, que la vida no le para bolas a uno!

Etiquetas: join
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 22:23.