Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

select anidado

Estas en el tema de select anidado en el foro de Mysql en Foros del Web. saludos, tengo una duda y pondre un ejemplo para ver quien me puede ayudar, tengo la siguiente tabla: id fecha valor 1 01/01/2209 999 2 ...
  #1 (permalink)  
Antiguo 31/07/2009, 08:04
 
Fecha de Ingreso: septiembre-2008
Mensajes: 242
Antigüedad: 15 años, 7 meses
Puntos: 1
select anidado

saludos, tengo una duda y pondre un ejemplo para ver quien me puede ayudar, tengo la siguiente tabla:

id fecha valor

1 01/01/2209 999
2 02/01/2209 234
3 03/01/2209 555
4 04/01/2209 567
5 05/01/2209 123


en una consulta necesito realizar 2 operaciones, ejemplo mostrar la sumartori de loq ue paso del 01/01/2209 al 03/01/2209 pero en el mismo resultado mostrar desde 04/01/2209 al 05/01/2209

osea el resultado seria mas menos lo siguiente:

consulta1 consulta2
1788 690


eso seria gracias....
  #2 (permalink)  
Antiguo 31/07/2009, 08:17
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: select anidado

Código sql:
Ver original
  1. SELECT t1.suma suma_1, t2.suma suma_2 FROM
  2. (SELECT SUM(valor) suma FROM tabla_sumas WHERE
  3. fecha BETWEEN '2009-01-01'
  4. AND '2009-01-03')t1,
  5. (SELECT SUM(valor) suma FROM tabla_sumas WHERE
  6. fecha BETWEEN '2009-01-04'
  7. AND '2009-01-05')t2;

Cambia tabla_sumas por el nombre de tu tabla.

saludos.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 31/07/2009, 09:27
 
Fecha de Ingreso: septiembre-2008
Mensajes: 242
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: select anidado

gracias, realice la consulta agregandole al final de los where un group by id por que necesito que los sume por id, en la primera no hay mayor problem pero en el segundo en a suma2 se me repite el mismo valor hacia abajo,asi qeudeo el codigo:

"SELECT t1.suma suma_1, t2.suma suma_2 FROM (SELECT sum(lectura) suma FROM nortepordia WHERE fecha BETWEEN '2009-01-01' AND '2009-01-03' group by id )t1,(SELECT sum(lectura) suma FROM nortepordia WHERE fecha BETWEEN '2009-01-04' AND '2009-01-05'group by id)t2;"

gracias
  #4 (permalink)  
Antiguo 31/07/2009, 09:44
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: select anidado

debes tener en cuenta que pueden existir mas ids para una consulta que para la otra. Lo que hace esta consulta es repetir los resultados obtenidos para llenar esos espacios que no es posible dejar vacíos.

Explica un poco mejor para este ejemplo, como esperarías la salida.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 31/07/2009, 10:28
 
Fecha de Ingreso: septiembre-2008
Mensajes: 242
Antigüedad: 15 años, 7 meses
Puntos: 1
Respuesta: select anidado

mira mi tema igual es complejo pero tratare de resumirlo(complejo para mi que igual llevo poco en esto) tengo una base similar a la que a continuacion detallo

1 01/01/2209 949
2 01/01/2209 299
1 02/01/2209 234
2 02/01/2209 334
1 03/01/2209 545
2 03/01/2209 555
1 04/01/2209 577
2 04/01/2209 567
1 05/01/2209 123
2 05/01/2209 113
1 01/02/2209 949
2 01/02/2209 299
1 02/02/2209 234
2 02/02/2209 334
1 03/02/2209 545
2 03/02/2209 555
1 04/02/2209 577
2 04/02/2209 567
1 05/02/2209 123
2 05/02/2209 113

la base es mucho mas larga por que tieen 3 años de infoemacion y tiene 190 id pero para el caso da lo mismo..

necesito hacer una consulta que muestre lo siguiente:

fecha inicio= cuando comienso el reporte
fecha fin= cuando finalizo el reporte
lectura= sumatoria de todo el tramo que consuto
lectura anterior= sumatoria del tramo del mes anterior

id fecha_inicio fecha_fin lectura lectura anterior
1 01/02/2209 05/02/2209 12345 77666
2 01/02/2209 05/02/2209 3443 234234



eso es mas menos lo que necesito llegar a hacer, gracias, ojalas me puedan ayudar ...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:44.