elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  [AYUDA] SQL Query
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [AYUDA] SQL Query  (Leído 4,103 veces)
Miseryk

Desconectado Desconectado

Mensajes: 225


SI.NU.SA U.GU.DE (2NE1 - D-Unit)


Ver Perfil
[AYUDA] SQL Query
« en: 27 Noviembre 2014, 18:49 pm »

Buenas tardes a todos, no sé si realmente ésto va acá o en Programación General, bueno mi cuestión es la siguiente:

Yo tengo una consulta como por ejemplo Select * From tbNombres;

La cual me puede traer muchos nombres, como "Pepe", "Juan", etc. El punto es que si quiero filtrar ciertos nombres como Pepes, Juan y otros más, que el query no se me haga de 5 renglones, ya que actualmente estoy usándolo de la siguiente manera:

Código
  1. SELECT * FROM tbNombres WHERE Name!='Pepe' AND Name!='Juan' AND Name!='Carlos' AND Name!='Luis' AND Name!='Alberto' AND Name!='Horacio' AND Name!='Tito' AND Name!='Marito' AND Name!='Oscar' AND Name!='Julieta' AND Name!='Florencia' AND Name!='Rocatalegiata' AND Name!='Raul' AND ...
  2.  

Es decir que tengo una tabla con miles de nombres y no quiero que me traiga unos 200 determinados, tal vez esté haciendo mal el query, lo cual es probable porque no sé programar en SQL, alguno me podría orientar?

Desde ya muchas gracias, sigo buscando mientras (Y)


En línea

Can you see it?
The worst is over
The monsters in my head are scared of love
Fallen people listen up! It’s never too late to change our luck
So, don’t let them steal your light
Don’t let them break your stride
There is light on the other side
And you’ll see all the raindrops falling behind
Make it out tonight
it’s a revolution

CL!!!
HdM


Desconectado Desconectado

Mensajes: 1.674



Ver Perfil
Re: [AYUDA] SQL Query
« Respuesta #1 en: 27 Noviembre 2014, 21:45 pm »

Para acortar code podrías usar WHERE name NOT IN (). Podrías crearte una tabla auxiliar que contenga todos los nombres que no quieres (sería más fácil de mantener que no tener que estar tocando los fuentes sin parar) y luego descartarlos con una subconsulta. Un ejemplo por si te sirve:

http://www.java2s.com/Tutorial/MySQL/0040__Select-Query/UsingNOTINwithsubquery.htm

EDIT: ¿qué tienen en común todos esos nombres para que quieras excluirlos? ¿algún valor en algún campo? Igual lo estás complicando demasiado y es suficiente con filtrar por ese campo.

Saludos.



« Última modificación: 27 Noviembre 2014, 22:11 pm por HdM » En línea

- Nice to see you again -
Miseryk

Desconectado Desconectado

Mensajes: 225


SI.NU.SA U.GU.DE (2NE1 - D-Unit)


Ver Perfil
Re: [AYUDA] SQL Query
« Respuesta #2 en: 28 Noviembre 2014, 13:22 pm »

Para acortar code podrías usar WHERE name NOT IN (). Podrías crearte una tabla auxiliar que contenga todos los nombres que no quieres (sería más fácil de mantener que no tener que estar tocando los fuentes sin parar) y luego descartarlos con una subconsulta. Un ejemplo por si te sirve:

http://www.java2s.com/Tutorial/MySQL/0040__Select-Query/UsingNOTINwithsubquery.htm

EDIT: ¿qué tienen en común todos esos nombres para que quieras excluirlos? ¿algún valor en algún campo? Igual lo estás complicando demasiado y es suficiente con filtrar por ese campo.

Saludos.



El tema es que no puedo crear tablas, en realidad dí un ejemplo básico para que se tenga una idea, pero realmente es un hook en windows y patcheo un query, entonces con el tema de la memoria quería limitar la longitud y de paso entender como optimizarlo.

Por lo que estuve viendo el NOT IN necesita un query adentro como SELECT, se puede hacer algo como:

Código
  1. ... WHERE Name NOT IN ('Pepe', 'Juan' ....)???
  2.  

Saludos.
En línea

Can you see it?
The worst is over
The monsters in my head are scared of love
Fallen people listen up! It’s never too late to change our luck
So, don’t let them steal your light
Don’t let them break your stride
There is light on the other side
And you’ll see all the raindrops falling behind
Make it out tonight
it’s a revolution

CL!!!
Miseryk

Desconectado Desconectado

Mensajes: 225


SI.NU.SA U.GU.DE (2NE1 - D-Unit)


Ver Perfil
Re: [AYUDA] SQL Query
« Respuesta #3 en: 28 Noviembre 2014, 14:29 pm »

Bueno, por los pocos ejemplos que encontré era de la manera la cual pregunté, aunque al SO no le gusta y explota, pero bueno ahora sé como se puede optimizar, gracias (Y)

Saludos.
En línea

Can you see it?
The worst is over
The monsters in my head are scared of love
Fallen people listen up! It’s never too late to change our luck
So, don’t let them steal your light
Don’t let them break your stride
There is light on the other side
And you’ll see all the raindrops falling behind
Make it out tonight
it’s a revolution

CL!!!
Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.724


<3


Ver Perfil WWW
Re: [AYUDA] SQL Query
« Respuesta #4 en: 28 Noviembre 2014, 15:26 pm »

Puedes crear tablas temporales, tiene vida sólo en la ejecución de un bloque de código:

  • Crear tabla temporal.
  • Insertar registros desde un archivo tipo .csv a la tabla temporal. (Con los registros que no quieras mostrar)
  • Ejecutar una query SELECT ... FROM ... WHERE ... NOT IN (SELECT ... FROM ... WHERE ...)

En código sería algo como:
Código
  1. -- Crear tabla temporal
  2. CRATE TABLE #tmpNotIn(Nombre VARCHAR(50) NOT NULL);
  3. GO
  4.  
  5. -- Llenar tabla temporal con los registros que no quieras mostrar
  6. -- Formato del archivo sería:
  7. --
  8. -- Filename = NotIn.csv
  9. --
  10. --    [A]
  11. -- [1] USUARIO
  12. -- [2] Raul
  13. -- [3] Pepe
  14. -- [4] Juan
  15. -- [5] Carlos
  16. -- [6] ...etc...
  17.  
  18. -- FIRSTROW # Fila desde donde empieza a ingresar, para no tomar el titulo de USUARIO
  19. -- ROWTERMINATOR # Delimitador de terminación de registro para pasar al proximo
  20. BULK INSERT #tmpNotIn FROM 'PATH_FILE' WITH (FIRSTROW = 2, ROWTERMINATOR = '\n' )
  21. GO
  22.  
  23. -- Selección de datos
  24. SELECT * FROM tblUsuario WHERE Nombre NOT IN (SELECT Nombre FROM #tmpNotIn)

PD1: No tengo SQL en este momento para probar si esta bien el código que te dejo, lo hice de memoria puede estar con errores.
PD2: además puedes utilizar procedimiento almacenados
« Última modificación: 28 Noviembre 2014, 16:04 pm por Shell Root » En línea

Te vendería mi talento por poder dormir tranquilo.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda query simple en mysql
PHP
yaG 2 2,434 Último mensaje 25 Enero 2007, 16:59 pm
por yaG
Reg Query
Scripting
Nilrac 4 5,057 Último mensaje 7 Febrero 2010, 05:01 am
por Nilrac
Query en MySQL
Bases de Datos
mark182 2 3,260 Último mensaje 16 Abril 2013, 16:05 pm
por s7evin
Unificar query
Bases de Datos
EFEX 2 2,991 Último mensaje 5 Febrero 2014, 18:01 pm
por EFEX
query-update
PHP
d91 3 2,018 Último mensaje 30 Septiembre 2014, 06:28 am
por gAb1
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines