Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Select avanzado.. (https://www.clubdelphi.com/foros/showthread.php?t=28480)

sakuragi 21-12-2005 00:42:13

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

ContraVeneno 21-12-2005 00:58:40

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 :D

sakuragi 21-12-2005 01:06:09

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

Xianto 21-12-2005 18:58:33

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.


La franja horaria es GMT +2. Ahora son las 19:28:07.

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