Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   todos los campos y mas (https://www.clubdelphi.com/foros/showthread.php?t=56422)

mjjj 16-05-2008 17:23:32

todos los campos y mas
 
Hola, necesito de sus conocimientos.

Necesito hacer una consulta a una tabla de donde necesito saber de todos los campos, ademas de realizar una suma con uno de ellos.

Código SQL [-]
select *, sum(monto) from tabla

eso es lo que necesitaria, pero eso no va bien, la otra idea es escribir todos los campos, pero estos son mas de 50, y son muchos

alguna idea de como hacer esto mas rapido.

Saludos y gracias

hecospina 16-05-2008 18:34:21

Realmente creo que la unica solucion es digitar cada uno de los campos
Con
Código SQL [-]
Select *,sum(monto) from tabla

estas llamando todos los campos incluyendo el "monto", en este caso
sum(monto) seria el mismo valor que se encuentra en "monto"
No tendria sentido hacerlo
Si necesitas ahorrar tiempo usa el query builder que trae algunas herramientas para manejo de base de datos
Suerte

roman 16-05-2008 19:01:01

Hola mjjj,

Creo que debes replantearte lo que quieres hacer porque el problema no radica en la forma en que listes los campos. Una función como sum() se aplica sobre grupos de registros por lo que su valor no puede estar aparejado con cada uno de los registros del grupo.

Digamos que, en este caso, el grupo son todos los registros. Una consulta como

Código SQL [-]
select sum(monto) from tabla

regresa un sólo registro, mientras que una consulta

Código SQL [-]
select * from tabla

regresa múltiples registros.

Luego entonces, no son compatibles. ¿Qué tendría que aparecer al lado de cada registro? ¿La suma total? No puede ser, pues el motor debe recorrer todos los registros para hacer tal cálculo.

Vamos, que lo que tú planteas es,

Código:

tabla

+---------+-------+
| cliente | monto |
+---------+-------+
| juan    |  100  |
+---------+-------+
| luisa  |  75  |
+---------+-------+
| laura  |  250  |
+---------+-------+
| pepe    |  30  |
+---------+-------+

Código:

Resultado

+---------+-------+-------+
| cliente | monto | total |
+---------+-------+-------+
| juan    |  100  |  455  |
+---------+-------+-------+
| luisa  |  75  |  455  |
+---------+-------+-------+
| laura  |  250 |  455  |
+---------+-------+-------+
| pepe    |    30 |  455  |
+---------+-------+-------+

Se ve raro ¿no?

// Saludos

poliburro 07-06-2008 02:16:47

Cita:

Empezado por mjjj (Mensaje 287213)

Necesito hacer una consulta a una tabla de donde necesito saber de todos los campos, ademas de realizar una suma con uno de ellos.

Select *, sum(monto) from tabla

Eso es super sencillo de hacer. Prueba con esto:

Código SQL [-]
select Tabla.*, sum(monto) from tabla


El chiste es utilizar el nombre de la tabla como alias. Si solo tienes una tabla funciona, si tienes más, lo ideal es hacer uso de alias explícitos.

SAludos

roman 07-06-2008 04:06:29

Amigo poliburro, ¿has probado esto que dices? Yo pongo una consulta como la que escribes, en MySQL y me lanza el consabido error:

Cita:

Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause
Tendría necesariamente que agrupar por algún campo. Pero si lista todos los campos, entonces tendría que agrupar por todos los campos, con lo cual, realmente no estaríamos agrupando nada.

// Saludos

poliburro 07-06-2008 04:15:57

Cita:

Empezado por roman (Mensaje 292003)
Amigo poliburro, ¿has probado esto que dices? Yo pongo una consulta como la que escribes, en MySQL y me lanza el consabido error:


Tienes razon me apresuré a responder.

:P saludos


La franja horaria es GMT +2. Ahora son las 03:52:54.

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