Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-12-2005
Avatar de sakuragi
sakuragi sakuragi is offline
Miembro
 
Registrado: feb 2004
Ubicación: root
Posts: 1.435
Poder: 22
sakuragi Va por buen camino
Question Select avanzado..

hola que tal, alguien que sepa de un manual o algo sobre sql avanzado, bueno no se si la consulta que le voy a poner en seguida sea de algo de sql avanzado, pero ya vati por la red y no encontre nada paresido

Código SQL [-]
 select *
 from (select id,idfactura,idproveedores,nombre,ROUND(total,2,0) as total,
        ROUND(pagado,2,0) aspagado, ROUND((total-pagado),2,0) as
        DeudaTotal,FechaVenta,Horaventa
        from (select id,idfactura,idproveedor,total,tipodepago,descripcionpago,
                fechacompra,106)As fechaventa,CONVERT(varchar,
                fechacompra,103)As Ffechaventa,SUBSTRING(CONVERT(varchar,
                fechacompra,0),13,7)As Horaventa,(select nombre from 
                TBLproveedores WHERE id=TBLdatocompra.Idproveedor)As
                Nombre, dbo.num((select sum(importe)from TBLdepositocompra
                where (idfactura=TBLdatocompra.idfactura)and(idproveedor=
               TBLdatocompra.idproveedor)))As pagado
               from TBLdatocompra)
       TD1)
 TABLA where (Deudatotal>0)

bueno esta consulta la encontre por ahi como ejempo.

mas ese tipo de consulta no la havia visto en ningun manual, tutuoria o libro, si alguien de ustedes sabe como funciona bien, seria de gran ayuda si pueden aportar algo.
(:

sobre todo la mas graden duda es donde esta el "dbo.num" se gun lo que leido esto hase referencia al nombre de una tabla. pero esa tabla no existe.
y si me da los resultados.

saludos

gracias
__________________
OpenSuse OpenOffice.org icomputo
Responder Con Cita
  #2  
Antiguo 21-12-2005
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Para entender esta consulta, lo que yo haría sería ir analizando select por select, desde el más anidado hacia afuera.... a menos que alguien más tenga una mejor forma de analizar esa consulta
__________________

Responder Con Cita
  #3  
Antiguo 21-12-2005
Avatar de sakuragi
sakuragi sakuragi is offline
Miembro
 
Registrado: feb 2004
Ubicación: root
Posts: 1.435
Poder: 22
sakuragi Va por buen camino
gracias por contestar.

de echo eso hise.

el problema que le hayo es por que en la columna, pagado no me da los numeros reales.

Código SQL [-]
 dbo.num((select sum(importe)from TBLdepositocompra
pero si hago esta consulta separada sin el "dbo.num" si me los
da reales "23.23"

esa es la gran duda.

hacer que me los de reales, no se si tenga que ver "dbo.num"
para que no me deja sacar bien el resultado.

gracias
__________________
OpenSuse OpenOffice.org icomputo
Responder Con Cita
  #4  
Antiguo 21-12-2005
Avatar de Xianto
Xianto Xianto is offline
Miembro
 
Registrado: oct 2004
Ubicación: Nací en Neuquén (ARG), desde 2001 Spain
Posts: 151
Poder: 20
Xianto Va por buen camino
Cuando en SQL 2000, por ejemplo, haces una funcion de usuario, la forma de llamarla es con dbo.nombre_funcion...

Imagino que has tomado la query de algun sitio y te falta la funcion "num".

Si los resultados te son útiles, simplemente pasa de usar la funcion y listo, sino genera una con el nombre y que haga lo que necesitas para el caso, como redondear un float...

De cualquier forma, te sugiero que mires bien lo que quieres, porque según mi experiencia en SQL, te dire que esa consulta carece de conocimientos sobre optimización, porque los Select anidados son culpa de un mal desarrollo de la DB... pierden mucho tiempo, el contrario de un inner join.

Saludos.
__________________
El diseño dira si tiene futuro...
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 13:27:00.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi