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

Unir 2 tablas

Estas en el tema de Unir 2 tablas en el foro de Mysql en Foros del Web. Buenas!, Antes de nada... felices fiestas!. Tengo 2 tablas, una de contenido y otra de menciones. La primera tabla tiene libros, tiene los siguientes campos: ...
  #1 (permalink)  
Antiguo 30/12/2016, 18:22
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.566
Antigüedad: 10 años, 7 meses
Puntos: 19
Unir 2 tablas

Buenas!,

Antes de nada... felices fiestas!.

Tengo 2 tablas, una de contenido y otra de menciones.

La primera tabla tiene libros, tiene los siguientes campos:

Nombre tabla: books

id=id del contenido.
user=id de usuario creador.
description=contenido del artículo

Luego tengo otra tabla, por si el usuario creador ha mencionado a otro usuario:

Nombre de la tabla: mentions

id:id de la mencion
mencion: id del usuario mencionado.
book: id del contenido mencionado

Quiero hacer un select que haga una consulta con:

-Elementos de la tabla books creados por el usuario 82 + elementos de la tabla books que tienen 1 mención en la tabla mentions.

He pensado mucho como hacerlo, pero no se me ocurre ninguna forma realista.

Alguien me puede echar una mano?... ya siento molestar siempre con las consultas que unen 2 tablas, pero me lio mucho con ellas :P

Puede ser algo como:

Código MySQL:
Ver original
  1. SELECT * FROM books left join mentions where books.user=12 and mentions.mencion=12

Edito, algo así:

Código MySQL:
Ver original
  1. SELECT * FROM books left join mentions on books.user=12 and mentions.mencion=12

Pero me devuelve todo. Lo que quiero es solo los books del user 12 y los libros donde hay una mencion al user 12 :P

Edit de nuevo:

Me parece que igual debo hacer 2 consultas y unirlas?... igual el LEFT JOIN no sirve para lo que intento hacer. :P

Última edición por salbatore; 30/12/2016 a las 20:10
  #2 (permalink)  
Antiguo 31/12/2016, 08:27
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.111
Antigüedad: 11 años, 3 meses
Puntos: 728
Respuesta: Unir 2 tablas

ejemplo de tus datos para entender mejor que ocupas......
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 01/01/2017, 21:40
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.566
Antigüedad: 10 años, 7 meses
Puntos: 19
Respuesta: Unir 2 tablas

Buenas Libras!,

Tengo 2 tablas:

BOOKS: id - texto - user
MENTIONS: id - user - book (es el id de la tabla books)

Quiero obtener todos los registros del user 12 de la tabla BOOKS (user=12) junto a los BOOKS que tengan una mención al user 12 (MENTIONS user=12).

Ejemplo:

Books:
id - texto - user
1 - Mi primer libro - 12
2 - Mi segundo libro - 12
3 - Libro sin mencion ni usuario - 33
4 - Mi libro con mención - 33



Menciones:

id - user - book
1 - 12 - 4

Quiero que me devuelva:

1 - Mi primer libro - 12
2 - Mi segundo libro - 12
4 - Mi libro con mención - 33


:D

Feliz año nuevo! Muchas gracias por tu ayuda
  #4 (permalink)  
Antiguo 02/01/2017, 08:51
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.111
Antigüedad: 11 años, 3 meses
Puntos: 728
Respuesta: Unir 2 tablas

Seria algo asi:

Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. id INT,
  4. texto VARCHAR(200),
  5. [USER] INT
  6. )
  7.  
  8. CREATE TABLE #temp2
  9. (
  10. id INT,
  11. [USER] INT,
  12. book INT
  13. )
  14.  
  15.  
  16.  
  17.  
  18.  
  19. INSERT INTO #temp VALUES (1,'Mi primer libro',12)
  20. INSERT INTO #temp VALUES (2,'Mi segundo libro',12)
  21. INSERT INTO #temp VALUES (3,'Libro sin mencion ni usuario',33)
  22. INSERT INTO #temp VALUES (4,'Mi libro con mención',33)
  23.  
  24. INSERT INTO #temp2 VALUES (1,12,4)
  25.  
  26.  
  27. SELECT id, [USER], texto FROM #temp AS t1 WHERE [USER]=12
  28. UNION
  29. SELECT t2.id,t1.[USER], t2.texto FROM #temp2 AS t1
  30. LEFT JOIN #temp AS t2 ON (t1.book=t2.id)
  31. WHERE t1.[USER]=12

Resultado:

id user texto
1 12 Mi primer libro
2 12 Mi segundo libro
4 12 Mi libro con mención
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 03/01/2017, 10:44
Avatar de salbatore  
Fecha de Ingreso: abril-2007
Ubicación: Springfield
Mensajes: 1.566
Antigüedad: 10 años, 7 meses
Puntos: 19
Respuesta: Unir 2 tablas

Muchas gracias Libras :D... es perfecto!

feliz año!

Etiquetas: campo, 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:35.