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

[SOLUCIONADO] Seleccionar parejas de valores diferentes

Estas en el tema de Seleccionar parejas de valores diferentes en el foro de Mysql en Foros del Web. Hola, tengo dos tablas: tabla1 y tabla2 , la tabla1 tiene una columna que es FK de una columna de tabla2 y las dos tienen ...
  #1 (permalink)  
Antiguo 30/03/2013, 05:12
 
Fecha de Ingreso: mayo-2011
Mensajes: 3
Antigüedad: 13 años
Puntos: 0
Seleccionar parejas de valores diferentes

Hola,

tengo dos tablas: tabla1 y tabla2, la tabla1 tiene una columna que es FK de una columna de tabla2 y las dos tienen una columna que es FK de otra tabla, esta columna es código. De manera que tengo esto:
Tabla 1
Id1 | Nombre1 | Codigo | Id2

Tabla 2
Id2 | Nombre2 | Codigo

Lo que yo quiero hacer es seleccionar las parejas de valores de las tablas 1 y 2 que NO coinciden para la columna Codigo. He intentado hacer ésto pero no funciona, me devuelve 0 valores:
Código MySQL:
Ver original
  1. SELECT tabla1.codigo, tabla2.codigo
  2. FROM tabla1 AS t1 LEFT JOIN tabla2 AS t2 ON t1.Id2=t2.Id2
  3. WHERE t1.codigo !=  t2.codigo
La verdad es que no se me ocurre como hacerlo, ¿alguna idea?

Un saludo y gracias de antemano.

Última edición por gnzsoloyo; 30/03/2013 a las 07:22
  #2 (permalink)  
Antiguo 30/03/2013, 07:27
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, 5 meses
Puntos: 2658
Respuesta: Seleccionar parejas de valores diferentes

Si esto no produce respuestas:
Código MySQL:
Ver original
  1. SELECT tabla1.codigo, tabla2.codigo
  2. FROM tabla1 AS t1 INNER JOIN tabla2 AS t2 ON t1.Id2=t2.Id2
  3. WHERE t1.codigo !=  t2.codigo

Simplemente es que no existe un registro en Tabla1 que se relacione con Tabla2 y que al mismo tiempo tengan valores diferentes en CODIGO...
No hay otra posibilidad.
SI estás seguro de que existe, deberás mostrarnos la estructura real de las tablas (porque a mi entender nos estás dando nombres cambiados), y una muestra de datos de ambas tablas que según tu, deberían aparecer en la consulta.
__________________
¿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 31/03/2013, 03:09
 
Fecha de Ingreso: mayo-2011
Mensajes: 3
Antigüedad: 13 años
Puntos: 0
Respuesta: Seleccionar parejas de valores diferentes

Entonces doy por hecho que esa condición no me permite evaluar si una de las tuplas es NULL...

Los datos que he dado no son reales, lo he puesto así por simplificar la pregunta aunque no sé si lo habré empeorado :/

Actualmente, la tabla de resultados que me tiene que devolver ha de ser una cosa así:

Código:
t1.Codigo    t2.Codigo
1                  NULL
2                  NULL
3                  NULL
Pero la consulta debe estar formulada para que me devuelva por ejemplo:
Código:
t1.Codigo    t2.Codigo
1                  NULL
2                  NULL
3                  NULL
4                  5
Porque la tabla que tengo no es estática y voy a tener que ir añadiéndole información, y puede que en algún momento se dé el caso de que uno de los dos no sea NULL.

Muchas gracias.
  #4 (permalink)  
Antiguo 31/03/2013, 05:05
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, 5 meses
Puntos: 2658
Respuesta: Seleccionar parejas de valores diferentes

Cita:
Los datos que he dado no son reales, lo he puesto así por simplificar la pregunta
Abstraer un caso para usar un ejemplo aplicable requiere mucha experiencia. SI no tienes varios años de práctica efectiva, te recomiendo que pongas siempre los casos reales con datos reales. Evita confusiones y malos consejos.

En tu caso, el problema es que no estamos considerando la posibilidad de los NULL (aunque en el LEFT JOIN debería haber salido):
Código MySQL:
Ver original
  1. SELECT T1.codigo,  t2.codigo
  2. FROM tabla1 t1 LEFT JOIN tabla2 t2 ON t1.Id2=t2.Id2
  3. WHERE t1.codigo !=  t2.codigo OR T2.codigo IS NULL

Tip: No uses AS. Es obsoleto.
__________________
¿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, select, 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 13:22.