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

Join de todo

Estas en el tema de Join de todo en el foro de Mysql en Foros del Web. Buenas, Hay algun join en Mysql para poder quedarme con todos los registros de las dos tablas, es decir comunes y no comunes? He buscado ...
  #1 (permalink)  
Antiguo 15/06/2014, 10:04
 
Fecha de Ingreso: noviembre-2012
Mensajes: 136
Antigüedad: 11 años, 5 meses
Puntos: 0
Join de todo

Buenas,

Hay algun join en Mysql para poder quedarme con todos los registros de las dos tablas, es decir comunes y no comunes?

He buscado el Full outer join pero en my sql no funciona

esta es la query que uso pero lo quiero todo

Código MySQL:
Ver original
  1. a
  2.  right join  
  3.  b
  4. (a.dia=b.dia and
  5.  
  6. a.mes=b.mes and
  7. a.año=b.año)



Gracias

Última edición por gnzsoloyo; 15/06/2014 a las 11:05
  #2 (permalink)  
Antiguo 15/06/2014, 11:08
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Join de todo

Por lo pronto, no es buena práctica poner una fecha separada en tres campos (dia, mes y año). Es preferible usar un campo de tipo DATE, y no hacer ese esquema.
Por lo demás, un JOIN basado en fecha, lo veo súmamente inseguro, y con tendencia a erorres por datos.
Fuera de eso, el JOIN, sea LEFT o RIGHT, para que devuelva todo de forma segura requiere que se incluya en el WHERE la condición de NULL.
Código MySQL:
Ver original
  1. SELECT a, b, c, d, e
  2. FROM tabla1 T1 LEFT JOIN tabla2 T2 ON T1.tabla1_id = T2.tabla1_id
  3. WHERE TRUE OR T2.tabla1_id  IS NULL;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 16/06/2014, 03:14
 
Fecha de Ingreso: noviembre-2012
Mensajes: 136
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Join de todo

Primero gracias.

En verdad la query la hago entre otros campos, lo puse rapido los campos del join son
(a.mes=b.mes and

a.tienda=b.tiendaand
a.tipo=b.tipo)

Respecto tu where yo no tengo el campo id.

Gracias
  #4 (permalink)  
Antiguo 16/06/2014, 03:49
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Join de todo

Cita:
Iniciado por Macas Ver Mensaje

Respecto tu where yo no tengo el campo id.

Gracias
Pes entonces usa el b.tienda e el b.tipo.
Lo importante es que veas que el campo relacional de la segunda tabla sea NULL.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 16/06/2014, 03:50
 
Fecha de Ingreso: noviembre-2012
Mensajes: 136
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Join de todo

Porque una cosa, en MySql no entiendo la diferencia entre left join o un left outer lo mismo pero con el rigt.

Que diferencia hay?
  #6 (permalink)  
Antiguo 16/06/2014, 04:06
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Join de todo

LEFT OUTER JOIN es sintaxis de SQL Server, no un estándar.
El estándar de SQL determina la existe del LEFT JOIN, lo demás son agregados de cada DBMS.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: join, registro, select, sql, tabla, todo
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 09:35.