Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 2
Ir a la página 1, 2  Siguiente
 
Como Hacer Una Subconsulta En Sqlite?
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Como Hacer Una Subconsulta En Sqlite? 
 
buenas,

estoy trabajando duro en el programa Taller2015....

y como es el programa de mi trabajo esta a prueba constantemente.....
a medida que se van sumando los registros surge crear un nuevo tipo de fitro....
es decir por ejemplo:
necesito hacer un like para buscar en el campo nombre de cliente y que a su vez tenga la fecha de un determinado año (la idea es usar el año actual para no mostrar ordenes viejas)

esta es la sentencia normal a la cual hay que agregarle una subconsulta que filtre por año....

Conectar1.Exec("Select * from tablataller where " & TipoDato & " like '%" & filtro & "%'")


algo así seria no se....
Conectar1.Exec("Select * from tablataller where " & TipoDato & " like '%" & filtro & "%'" in (subconsulta)



alguna orientación??


editado:
Select * from tablataller where nombre like '%jorge%' and (select * from tablataller where ingreso like '%2014%') algo asi
estas sentencias por separado funcionan pero no se como anidarlas....
 




===================
Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
 
última edición por v3ctor el Jueves, 24 Diciembre 2015, 19:27; editado 1 vez 
v3ctor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Como Hacer Una Subconsulta En Sqlite? 
 
v3ctor:


Prueba esto:
Citar:
Select * from (select * from tablataller where ingreso like '%2014%')  where nombre like '%jorge%'

 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Como Hacer Una Subconsulta En Sqlite? 
 
no funciono, estoy haciendo las pruebas desde la consola sql de gambas, como siempre...
 




===================
Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
 
v3ctor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Como Hacer Una Subconsulta En Sqlite? 
 
v3ctor:


Citar:
no funciono, estoy haciendo las pruebas desde la consola sql de gambas, como siempre...

Te debería funcionar, yo las hago asi...  

Tambien podrias hacer esto:
Select * from tablataller  where (nombre like '%jorge%' and ingreso like '%2014%')

 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
última edición por jsbsan el Jueves, 24 Diciembre 2015, 19:39; editado 1 vez 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Como Hacer Una Subconsulta En Sqlite? 
 
la ultima que pusiste funciono...
ahora si me pongo a laburar con eso, voy a poner un combobox con años y tal vez una opción para dejar el combobox en el año actual.


la anterior no se porque no función veré si soy yo que hago algo mal..

gracias julio como siempre un grande.
 




===================
Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
 
v3ctor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Como Hacer Una Subconsulta En Sqlite? 
 
Si el campo fecha es date y solo quieres actuar sobre una tabla, tienes dos formas de hacerlo.
Mediante  Exec yo usaría la función strftime() de Sqlite3 para filtrar el año y con AND añades la condición de LIKE del nombre. Si es una tabla no deberías tener más problema.
Mediante  Find. He visto que seleccionas todos los campos de la tabla. Puedes emplear el método Find("tabla", ----condiciones y argumentos a sustitur---) y te devolverá un Result con los registros seleccionados.

De todos modos he hecho una consulta en mi base de datos con un campo fecha y otro string y quedaría así:

select * from contratos where dirctr like('%Lagos%') and  strftime('%Y', fecctr) = '2015'

y a mi me funciona, espero te ayude

Un saludo
 



 
ahtonio - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Como Hacer Una Subconsulta En Sqlite? 
 
ahtonio, hola

lo voy a probar,

julio así me quedo el código y funciona de lujo:

Public Sub txtBuscar_KeyRelease()
  Dim hresul As Result
  Dim filtro As String

  filtro = txtBuscar.Text
  
  QueFiltro()
    
  Select Case TipoDato
    Case "ingreso"
       hresul = Conectar1.Exec("Select * from tablataller where " & TipoDato & " like '%" & filtro & "%'")
    Case "pendiente"
       hresul = Conectar1.Exec("Select * from tablataller where " & TipoDato & " like '%si%'")
    Case Else
       If bAnio = False Then
         hresul = Conectar1.Exec("Select * from tablataller where " & TipoDato & " like '%" & filtro & "%'") 'original
       Else
         hresul = Conectar1.Exec("Select * From tablataller where(" & TipoDato & " Like '%" & filtro & "%' and ingreso like '%" & sAnio & "%')") 'filtro por año
       Endif
  End Select
  
  If hresul.Available = False Then
'       Me.Refresh
      vBoxSuma.Text = "0"
      txtTotalClientes.Text = "0"
      txtTotalOrdenes.Text = "0"
      txtCN.Text = "0"
      txtOPE.Text = "0"
      vBoxNP.Text = "0"
      tvTaller.Clear
      tvTaller.Grid = False
   Else
      tvTaller.Grid = True
      MostrarDatos(hresul)
   Endif

End

 




===================
Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
 
v3ctor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Como Hacer Una Subconsulta En Sqlite? 
 
La forma correcta no necesita paréntesis. Además las fecha no se comparan con comodines, porque un año es un integer y así se debió declarar ese campo en la tabla.

Con lo cual, la consulta más correcta podría ser así:

SELECT * FROM tablataller  WHERE nombre LIKE '%jorge%' AND ingreso = 2014;


En gambas se puede hacer con código nativo igualmente, pero si usas sentencias sql es preferible usar sustituciones usando los parámetros del procedimiento Exec:

resultado = Conectar1.Exec("Select * from tablataller  where nombre like %&1% and ingreso = &2;", sNombre, dFecha)


Como ya he explicado en multitud de ocasiones, los comodines de sustitución &1 y &2 corresponden a las dos variables que se añaden como argumentos a la función Exec que son en este caso sNombre y dFecha. Sólo usa las que correspondan en tu programa, esos nombres son solo ilustrativos. De esta forma no hay que preocuparse de poner comillas ni concatenar variables dentro de la sentencia sql.

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Como Hacer Una Subconsulta En Sqlite? 
 
jguardon, hola

tu primer planteo me confunde pues las fechas cuando se crea una base de datos de declaran como date o datatime que es mi caso.

sobre lo segundo tenes toda la razón, me falta conducta o disciplina de programador, sin hablar de experiencia.

y ya que me avisaste de mi mala praxis sintáctica.... el nombre de la tabla es incorrecto (ya shordi me ha reprendido varias veces) pues

la tablataller en realidad contiene ordenes de servicios... es decir su nombre natural es "ordenes".

saludos y gracias por los excelentes aportes....seguimos sumando experiencia en gambas.  
 




===================
Software libre, programación libre, vida libre es la Public function Libertad()as Invendible
Proyectos: VisorRV1960,Taller2015,Tanteador
https://sourceforge.net/u/v3ctor-full/profile/
Blog: http://novatocodegambas.blogspot.com.uy/
 
v3ctor - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Como Hacer Una Subconsulta En Sqlite? 
 
v3ctor escribió:  
jguardon, hola
tu primer planteo me confunde pues las fechas cuando se crea una base de datos de declaran como date o datatime que es mi caso.


Cierto. Al comparar sólo con el año, supuse que en ese campo sólo guardabas el año como un número. Si el campo es datetime, lo correcto es emplear una variable de tipo date para hacer la comparación, pero si el dato a comparar lo obtienes de un control que no sea un valuebox, tendrás convertirlo antes a tipo date para que funcione.

Por lo tanto, la consulta que puse antes creo que es válida. Los nombres de los campos son también confusos, ya que 'ingreso' no se asocia con una fecha, sino con una cantidad. Si puedes, cámbiala por 'fechaingreso' o algo que denote el tipo de campo.

Ten en cuenta que las comparaciones con fechas son más problemáticas por ser un dato complejo, ya sabes, año, mes, día, hora, etc, etc. Si no es exactamente lo que tienes almacenado en la base de datos, la comparación fallará. Para eso, tanto gambas como sql disponen de funciones que extraen uno de los componentes de las fechas.

En gambas, para el año por ejemplo se usa:

Year(Date), donde Date es la variable que contiene la fecha (por ejemplo el Value de tu ValueBox, de tipo Date)

En sql lo ha explicado muy bien ahtonio, se usa la función strftime()

https://www.sqlite.org/lang_datefunc.html

De esa forma, no tendrás errores al buscar sólo por el año.

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Como Hago Para Colocar A Una Persona En Un... jousseph General 2 Jueves, 22 Julio 2010, 06:36 Ver último mensaje
jousseph
No hay nuevos mensajes ¿Consulta Anidada O Subconsulta? Sqlite Dani26 Bases de Datos 3 Sabado, 27 Octobre 2012, 11:00 Ver último mensaje
jguardon
No hay nuevos mensajes Como Guardar Una Imagen En Sqlite En Un Ca... v3ctor Bases de Datos 9 Viernes, 01 Enero 2016, 14:55 Ver último mensaje
shordi
No hay nuevos mensajes Subconsulta De Una Columna Que Contiene So... v3ctor Bases de Datos 13 Miercoles, 31 Agosto 2016, 08:38 Ver último mensaje
shordi
 

Publicar nuevo tema  Responder al tema  Página 1 de 2
Ir a la página 1, 2  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron