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

Comparar 2 Selects o tablas

Estas en el tema de Comparar 2 Selects o tablas en el foro de Mysql en Foros del Web. Hola colegas, pues me estoy rompiendo la cabeza con una consulta que espero sea posible realizarla... Tengo 2 tablas Grupo_Producto y Temporal_grupo : Si yo ...
  #1 (permalink)  
Antiguo 28/01/2012, 21:11
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 3 meses
Puntos: 9
Comparar 2 Selects o tablas

Hola colegas, pues me estoy rompiendo la cabeza con una consulta que espero sea posible realizarla...

Tengo 2 tablas Grupo_Producto y Temporal_grupo:

Si yo realizo la siguiente consulta a la tabla grupo:

Código:
SELECT grupo.id_producto FROM grupo
WHERE id_grupo=2
me retorna:

id_producto
----------------
5

Ahora, si yo hago la consulta a la tabla temporal

Código:
SELECT temporal.id_producto FROM temporal
me retorna:

id_producto
----------------
5
14

Lo que deseo es comparar esos 2 resultados en un query y que me retorne la diferencia, osea "14"... he intentado con esto:

Código:
SELECT grupo.id_producto FROM grupo
WHERE grupo.id_producto
NOT IN (
SELECT temporal.id_producto
FROM temporal
WHERE grupo.id_producto=temporal.id_producto
)
AND grupo.id_grupo=2
Pero no me retorna nada, existirá otra forma de comparar dichos resultados?

espero su ayuda, gracias
__________________
Quitenme la vida pero no la bebida.
  #2 (permalink)  
Antiguo 29/01/2012, 09:38
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: Comparar 2 Selects o tablas

Tienes al menos dos errores lógicos, pero la pregunta final es fácil de responder.
El WHERE que planteas debe cumplir que:
1) Devuelva todos los registros de la tabla Grupo que no estén el Temporal_Grupo.
2) El registro devuelto debe ser producto_id = 2.

En el contexto de los datos que dices tener, no existe ningún registro que cumpla eso, porque:
1) Grupo tiene un sólo registro, con ID = 5.
2) Ese único registro está también en la tabla Temporal_grupo, por lo que no se lo devuelve.
3) Es diferente a 2, por lo que tampoco cumple la segunda condición, por lo que aunque no estuviese en la segunda tabla, no te lo devolvería.

Creo que ni miraste lo que ponías, o lo que ponías no era lo que necesitabas buscar.

Cita:
Lo que deseo es comparar esos 2 resultados en un query y que me retorne la diferencia, osea "14"
Eso es lo más sencillo del mundo, y hay al menos dos formas de lograrlo:
Código MySQL:
Ver original
  1. SELECT G.id_producto
  2. FROM grupo G LEFT JOIN temporal T ON G.id_producto = T.id_producto
  3. WHERE T.id_producto IS NULL;

O bien:
Código MySQL:
Ver original
  1.     id_producto
  2. FROM grupo
  3. WHERE id_producto NOT IN (SELECT id_producto FROM temporal);
__________________
¿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: query, select, selects, 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 10:47.