PDA

Ver la Versión Completa : todos los campos y mas


mjjj
16-05-2008, 17:23:32
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.


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

select sum(monto) from tabla

regresa un sólo registro, mientras que una consulta

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,


tabla

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



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


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:

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