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

[SOLUCIONADO] dudas/problemas con consultas JOIN

Estas en el tema de dudas/problemas con consultas JOIN en el foro de Mysql en Foros del Web. Hola foreros, trabajo con 2 tablas(datos1 y datos2) de igual estructura en pMA, al hacer un FULL JOIN me da errores al usar una condicion ...
  #1 (permalink)  
Antiguo 14/01/2016, 11:44
 
Fecha de Ingreso: diciembre-2007
Mensajes: 299
Antigüedad: 16 años, 3 meses
Puntos: 2
Pregunta dudas/problemas con consultas JOIN

Hola foreros,
trabajo con 2 tablas(datos1 y datos2) de igual estructura en pMA, al hacer un FULL JOIN me da errores al usar una condicion(si no le pongo condicio me funciona perfectamente), no se cual pueda ser el error ¿me echais una mano para solucionarlo?

Adjunto imagen del error k me devuelve pMA

Gracias, saludos:D
__________________
1os pasaos con xAMP en Windows
programando en PERL
  #2 (permalink)  
Antiguo 14/01/2016, 11:56
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: dudas/problemas con consultas JOIN

Postea el resutado de esto:
Código MySQL:
Ver original
  1. SHOW CREATE TABLE datos1;
Código MySQL:
Ver original 

Advertencia: MySQL nunca se equivoca. Si dice que no existe, es que no existe, o no tiene el nombre que supones.
__________________
¿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 14/01/2016, 12:14
 
Fecha de Ingreso: diciembre-2007
Mensajes: 299
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: dudas/problemas con consultas JOIN

Gracias por tu respuesta gnzsoloyo, pero sigo sin ver el error

aqui esta el resultado a los SHOW....
__________________
1os pasaos con xAMP en Windows
programando en PERL
  #4 (permalink)  
Antiguo 14/01/2016, 12:39
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: dudas/problemas con consultas JOIN

Perdón pero, ¿tienes problemas para postear las cosas aquí, o es que no quieres hacerlo?
El combo que dice "Highlight" permite etiquetar el codigo de una forma legible. Ayuda mucho a que podamos ayudar...

En principio, el problema puede deberse a que vienes de usar otro DBMS (posiblemente SQL Server), y no has pasado por el manual de referencai de MySQL para ver las diferencias de sintaxis.

Esta es la parte que trata de los JOIN:

https://dev.mysql.com/doc/refman/5.7/en/join.html

Como podrás ver, no existe el FULL JOIN en MySQL, por lo que es probable que esa palabra la esté tomando colo alias de la tabla y por eso no la identifica.

Estos son los casos de JOIN aceptados por MySQL:
Código MySQL:
Ver original
  1. join_table:
  2.     table_reference [INNER | CROSS] JOIN table_factor [join_condition]
  3.   | table_reference STRAIGHT_JOIN table_factor
  4.   | table_reference STRAIGHT_JOIN table_factor ON conditional_expr
  5.   | table_reference {LEFT|RIGHT} [OUTER] JOIN table_reference join_condition
  6.   | table_reference NATURAL [{LEFT|RIGHT} [OUTER]] JOIN table_factor
__________________
¿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 14/01/2016, 12:50
 
Fecha de Ingreso: diciembre-2007
Mensajes: 299
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: dudas/problemas con consultas JOIN

show create table datos1>>>
Código MySQL:
Ver original
  1. datos1  CREATE TABLE `datos1` (
  2.  `id` mediumint(9) NOT NULL,
  3.  `nombre` varchar(40) DEFAULT NULL,
  4.  `apellidos` varchar(40) DEFAULT NULL,
  5.  `email` varchar(40) DEFAULT NULL,
  6.  PRIMARY KEY (`id`)

show create table datos2>>>
Código MySQL:
Ver original
  1. datos2  CREATE TABLE `datos2` (
  2.  `id` smallint(6) DEFAULT NULL,
  3.  `nombre` varchar(40) CHARACTER SET utf8 DEFAULT NULL,
  4.  `apellidos` varchar(40) CHARACTER SET utf8 DEFAULT NULL,
  5.  `email` varchar(40) CHARACTER SET utf8 DEFAULT NULL

Te referias a esto no?? crei k se veria mas claro con una imagen.

No veo la diferencia, mejor asi??
__________________
1os pasaos con xAMP en Windows
programando en PERL
  #6 (permalink)  
Antiguo 14/01/2016, 13:28
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 4 meses
Puntos: 655
Respuesta: dudas/problemas con consultas JOIN

Tengo rato de no tocar MySQL, pero puede que el o los errores sean:
  • datos1.id es del tipo mediumit y datos2.id es del tipo smallint.
  • La tabla datos1 utiliza charset utf8 y datos2 latin1
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #7 (permalink)  
Antiguo 14/01/2016, 13:40
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: dudas/problemas con consultas JOIN

Cita:
Iniciado por alfa18 Ver Mensaje
Te referias a esto no?? crei k se veria mas claro con una imagen.

No veo la diferencia, mejor asi??
las imágenes son medio basura cuando estamos hablando de código. Hacen imposible copiar y probar lo que tienen para verificar los fallos. Es siempre mejor código puro.

por otro lado, la observación de BrujoNic es buena en el sentido en que debes unificar los criterios de generación de los ID, en especial cuando los estás relacionado. No tiene sentido hacer un JOIN con datos de diferente longitud, como es el caso de SMALLINT contra MEDIUMINT. En el MEDIUMINT tendrás un rango de representación totalmente distinto, por lo que hay una enorme cantidad de registros de esa tabla que JAMAS se podrán relacionar.

Pero lo que yo menciono es específicamente que no existe el FULL como clausula de JOIN en MySQL, por lo que probablemente lo esté tomando como alias.

Pruébalo así:
Código MySQL:
Ver original
  1. FROM datos1 D1 INNER JOIN datos2 D2 ON D1.id = D2.id;

Otro error que veo es que estás creando tablas con diferente charset. Eso está MAL, muy mal.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 15/01/2016, 08:12
 
Fecha de Ingreso: diciembre-2007
Mensajes: 299
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: dudas/problemas con consultas FULL JOIN

Hola de nuevo, siento el retraso no pude contestar antes

@gnzsoloyo, no trabajo con SQLserver pero el tutorial k konsulte para FULL JOIN si se basaba en SQLserver, y no kai en k kiza no existiera un FULL JOIN en MySQL

En efecto, tienes razon y toma el full como un alias de la tabla(y no reconoce el nombre de la tabla, SOLO el del alias, en el nombre de la columna 'id') y por eso me 'reconoce' el full join(sin usar condicion)

Como ves, este codigo..........
Código:
SELECT * 
FROM datos1
FULL JOIN datos2 ON full.id = datos2.id
..........funciona perfectamente, ya q full es(como bien dices) un alias y en realidad se trata de un (inner) JOIN(que si existe en MySQL).

@BrujoNic, no creo k el error se deba a esa diferencia de tipos de datos/charset, pero SI es una buena recomendacion para crear tablas.......la tendre en cuenta¡¡¡¡

Gracias a los dos por vuestros comentarios, un saludo:D

PD:tengo mas dudas sobre los diferentes JOINs de MySQL pero creo k sera mejor abrir otro hilo y ni sobrecargar este
__________________
1os pasaos con xAMP en Windows
programando en PERL
  #9 (permalink)  
Antiguo 15/01/2016, 10:13
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 4 meses
Puntos: 655
Respuesta: dudas/problemas con consultas JOIN

Consejo, si sabes español, si fuiste a una escuela, colegio y/o universidad, es indicio de que sabes leer y escribir.

Por lo tanto, te sugiero que escribas en español claro que para eso existe un idioma y no "inventos" estúpidos para abreviar.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #10 (permalink)  
Antiguo 15/01/2016, 15:20
 
Fecha de Ingreso: diciembre-2007
Mensajes: 299
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: dudas/problemas con consultas JOIN

a buen entendedor pocas palbras bastan................me deje alguna h o acento merlin??

Etiquetas: join, tabla
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 03:59.