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

Excluir registros en consulta

Estas en el tema de Excluir registros en consulta en el foro de Mysql en Foros del Web. Como puedo filtral los resultados de una consulta tengo el primer select que me arroja rojo, verde, amarillo luego hago otro select en base a ...
  #1 (permalink)  
Antiguo 13/06/2012, 09:59
 
Fecha de Ingreso: marzo-2012
Mensajes: 8
Antigüedad: 12 años, 9 meses
Puntos: 0
Excluir registros en consulta

Como puedo filtral los resultados de una consulta tengo el primer select que me arroja
rojo, verde, amarillo
luego hago otro select en base a otras condiciones que me arroja
rojo, verde
quisiera hacer una consulta que me excluya los resultados de la segunda consulta es decir que me "reste" digamos asi (rojo, verde, amarillo) - (rojo, verde) esto me daria como resultado --> amarillo hay alguna manera de hacerlo, espero me pueda ayudar
  #2 (permalink)  
Antiguo 13/06/2012, 10:27
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 11 meses
Puntos: 447
Respuesta: Excluir registros en consulta

Hola d0va:

No me quedó claro qué es lo que necesitas, pero veamos si esto es más o menos lo que quieres...

Supongamos que tienes dos tablas así:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM colores;
  2. +----------+
  3. | color    |
  4. +----------+
  5. | rojo     |
  6. | verde    |
  7. | amarillo |
  8. +----------+
  9. 3 rows in set (0.01 sec)
  10.  
  11. mysql> SELECT * FROM otros_colores;
  12. +-------+
  13. | color |
  14. +-------+
  15. | rojo  |
  16. | verde |
  17. +-------+
  18. 2 rows in set (0.00 sec)

Estas pueden ser el resultado de tus consultas... ahora, para obtener la "resta", como mencionas, puedes hacerla de varias formas...

Código MySQL:
Ver original
  1. mysql> #utilizando NOT EXISTS
  2. mysql> SELECT * FROM colores c
  3.     -> WHERE NOT EXISTS (
  4.     -> SELECT * FROM otros_colores oc
  5.     -> WHERE oc.color = c.color);
  6. +----------+
  7. | color    |
  8. +----------+
  9. | amarillo |
  10. +----------+
  11. 1 row in set (0.02 sec)
  12.  
  13. mysql> #utilizando NOT IN
  14. mysql> SELECT * FROM colores c
  15.     -> WHERE color NOT IN (
  16.     -> SELECT color FROM otros_colores);
  17. +----------+
  18. | color    |
  19. +----------+
  20. | amarillo |
  21. +----------+
  22. 1 row in set (0.00 sec)
  23.  
  24. mysql> #Utilizando LEFT JOIN
  25. mysql> SELECT c.* FROM colores c
  26.     -> LEFT JOIN otros_colores oc ON oc.color = c.color
  27.     -> WHERE oc.color IS NULL;
  28. +----------+
  29. | color    |
  30. +----------+
  31. | amarillo |
  32. +----------+
  33. 1 row in set (0.00 sec)

En lo particular prefiero la opción del NOT EXISTS, ya que esta te permite comparar contra más de un campo, mientras que la opción del NOT IN sólo se compara un campo a la vez.

Saludos
Leo.
  #3 (permalink)  
Antiguo 13/06/2012, 10:39
 
Fecha de Ingreso: marzo-2012
Mensajes: 8
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Excluir registros en consulta

OK MUCHAS GRACIA leonardo_josue me sirvio LEFT JOIN

Etiquetas: excluir, registros, select
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 00:37.