![]() |
Problemas con subtotales
Hola al Foro
Tengo la siguiente dificultad no logro establecer los subtotales de esta tabla en Access. :confused: Cliente-------------Importe Cubatur--------------$163 Cubatur--------------$512 Rosello---------------$290 Rosello---------------$419 Rosello---------------$177 Sime-----------------$432 Sime-----------------$178 Y necesito lograr Cliente-------------Importe Cubatur--------------$163 Cubatur--------------$512 ---------------------$675 Rosello---------------$290 Rosello---------------$419 Rosello---------------$177 ---------------------$886 Sime-----------------$432 Sime-----------------$178 ---------------------$610 Algo así en una sola consulta, he tratado de hacerlo con la propia codificación SQL de la tabla o desde Delphi pero ni modo, solo me sale un subtotal, yo cojí esta tabla de pruebas para que sea facil su compresión. Saludos |
Hola jucho 69, a mi se me ocurre hacerlo con 2 consultas y despues unirlas:
Saluditos |
Ojalá yo manejara el sql como tú, Caro :eek:
|
Hola Caro
!Que bien!, no se me hubiera ocurrido, gracias por tu ayuda, si alguno de ustedes me pudieras recomendar algún post o buen manual sobre SQL y consultas relacionales, sería de mucha ayuda. Saludos ;) |
Cita:
Cita:
Saluditos |
también puedes añadir una columna de ordenamiento extra... solo para hacerlo más facil...
|
Definitivamente, voy a comprarme otro libro de sql, este que tengo es muy básico :D
|
Hola movorack
Sí, la columna de ordenamiento es una opció más, gracias, es verdad lo que dice Carro que los manuales son muy básicos, buscaré por los demás Foros a ver que encuentro. Hola Casimironotevi, si encuentro algo te lo envío a tu correo. Un Saludo ;) |
Hola a todos,
el tipo de consultas que propone Caro creo que no aparece en ningún manual. Sí aparece algo en la ayuda de Firebird , no recuerdo como lo llama ( tablas derivadas creo). Ahora bien, estas consultas son TERRIBLEMENTE funcionales, y generalmente TERRIBLEMENTE inificientes en cuanto a velocidad de respuesta, ya que exprimen al motor de base de datos a tope ya que no son 'naturales'. Esto quiere decir que no se utilizan índices ni nada parecido ( generalmente ) y lo que hace el motor es generar una tabla temporal recorriendose las tablas que intervienen de cabo a rabo. Para confirmarlo es conveniente mirar el plan de ejecución, y además es conveniente medir si es mejor ahorrarse un procedimiento almacenado que cuajar el servidor unos segundos. Sobre todo cuando nuestra base de datos tiene muchos registros. Casimiro, tus aplicaciones de tropecientos gigas que sueles comentar funcionan estupendamente tanto tiempo y con esos volúmenes porque no conoces estas consultas enrevesadas. Y que conste, que a mi me gustan :D, ya que como Caro, me reto a ver si se puede hacer en una sola consulta o no. Un saludo |
Tienes razón, en parte, porque si el servidor es linux y tienes más de una cpu, cuando lanzas la consulta ocupa una de las cpu, pero las demás siguen libres para seguir antendiendo a los restantes usuarios.
He hecho una prueba con una pequeñita, poco más 500 Mb. y efectivamente el primer select lo recorre entero "natural", aunque de todas formas, el tiempo requerido ha sido 1 segundo. Cita:
Cita:
|
Solo comentar que la consulta correcta debería ser con una Union All ya que en realidad segun el requerimiento de Jucho69 es que por cada cliente salga cada importe efectuado más (+) la suma de todos los importe, lo cual significa que la cantidad de registro(tuplas)devueltas en la consulta general deben ser :
Cita:
Quizás los parentesis estan demás pero creo que es mejor ponerlo para una mejor comprensión de lo que se está haciendo.;). Saludos...:) |
De esa forma ha sido más rápido incluso, de 2 segundos a 1 seg.
Cita:
|
Hola
Gracias a todos por la ayuda, muy atento rgstuamigo, ya creo que contigo habia visto algo parecido, con Union All se pueden enlazar varias consultas previas incluso desde la propia base de datos. Saludos |
| La franja horaria es GMT +2. Ahora son las 16:00:27. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi