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

ayuda con consulta

Estas en el tema de ayuda con consulta en el foro de Mysql en Foros del Web. Amigos, soy nueva por aqui y necesito ayuda con una sentencia que no logro sacar: A ver, tengo que mostrar lo siguiente: user|visita1 |monto1|visita2 |monto2|visita3 ...
  #1 (permalink)  
Antiguo 09/09/2006, 08:49
 
Fecha de Ingreso: septiembre-2006
Mensajes: 6
Antigüedad: 17 años, 7 meses
Puntos: 0
ayuda con consulta

Amigos, soy nueva por aqui y necesito ayuda con una sentencia que no logro sacar:

A ver, tengo que mostrar lo siguiente:

user|visita1 |monto1|visita2 |monto2|visita3 |monto3 | visita4...monton|visitan
------------------------------------------------------------------------
usr1|2006-06-05|54.00|2006-06-20|850|2006-07-25|950|2006-08-01
usr2|2006-06-02|54.00|2006-06-15|850|2006-07-22|1050|2006-08-03

donde cada monto es la sumatoria de lo gastado en dicha visita,
Yo le paso via post los parametros de la visita1

mis datos estan asi:

VISITAS
-------------
IDVISITAS
USER
FECHAVISITA
FECHASIGUIENTEVISITA

MONTOS
-----------
IDMONTOS
USER
FECHAVISITA
MONTO

ASUMIENDO QUE DEBE BOTARME LA DATA EN BASE A UN RANGO YO DANDOLE 2 FECHAS ENTRE LAS CUALES DEBE ESTAR LA PRIMERA VISITA(FECHAVISITA), ALGUIEN ME DA UNA AYUDA plis
  #2 (permalink)  
Antiguo 09/09/2006, 11:30
 
Fecha de Ingreso: septiembre-2006
Mensajes: 6
Antigüedad: 17 años, 7 meses
Puntos: 0
Una ayudita para esta nenita
  #3 (permalink)  
Antiguo 09/09/2006, 14:15
 
Fecha de Ingreso: agosto-2006
Mensajes: 121
Antigüedad: 17 años, 8 meses
Puntos: 0
Bueno, no sé si entiendo bien tu problema. Si lo he hecho creo que primero estás asumiendo que lo que identifica una visita es el usuario junto a la fecha, por lo que entiendo que no se pueden dar dos visitas distintas del mismo usuario un mismo día. Si no es así entonces necesitas un nuevo campo en la tabla de montos llamado IdVisita y eliminar los campos user y fechavisita que ya tienes en la tabla de visitas.

Por otra parte, pretendes que en resultado se muestren un número indefinido de pares fecha, suma(montos). Si no estoy muy pez, eso con un simple select no lo vas a conseguir tal y como has indicado. Pero sí que puedes obtener grupos por usuario y fecha (o sea visitas) y en lugar de salir los pares uno al lado del otro saldrían en filas repitiendo el user. Esto lo puedes sacar así:

SELECT user, sum(monto), fechavisita FROM montos GROUP BY user, fechavisita ORDER BY user

que te daría resultados parecidos a

User Suma de montos Visita (Fecha)
=============================
usr1 200 2006/08/10
usr1 420 2006/08/12
usr1 112 2006/08/28
usr2 204 2006/08/10
usr2 310 2006/08/12
usr3 230 2006/08/12
usr3 392 2006/09/02

Luego lo que dices de acotar fechas lo puedes conseguir agregando la cláusula where a la consulta. Sólo que no acabo de entender por qué la primera debe ser la fechavisita, puesto que nunca se dará el caso de que una fecha de la tabla montos (para un mismo usuario) sea inferior a la fecha de la primera visita del usuario (no sé si me explico). Quizás no te haya entendido bien. Si es así, vuelve a preguntar.
  #4 (permalink)  
Antiguo 11/09/2006, 11:04
 
Fecha de Ingreso: septiembre-2006
Mensajes: 6
Antigüedad: 17 años, 7 meses
Puntos: 0
Gracias por la ayuda me salio, pero quisiera qu se mostrase en varias columnas, es decir userx,fecha1,monto1, fecha2, monto2 ,....fechan, monton
  #5 (permalink)  
Antiguo 11/09/2006, 11:05
 
Fecha de Ingreso: septiembre-2006
Mensajes: 6
Antigüedad: 17 años, 7 meses
Puntos: 0
Gracias por la ayuda me salio, pero quisiera qu se mostrase en varias columnas, es decir userx,fecha1,monto1, fecha2, monto2 ,....fechan, monton
  #6 (permalink)  
Antiguo 11/09/2006, 16:13
 
Fecha de Ingreso: agosto-2006
Mensajes: 121
Antigüedad: 17 años, 8 meses
Puntos: 0
Creo que lo de las varias columnas no se puede hacer sólo con SQL. La razón es porque los campos que tu pones en el SELECT son estáticos. Quiero decir que sabes cuántos y cuáles son mientras escribes la consulta. Y lo que tÚ quieres es que te salgan tantas columnas como filas se obtienen de la conulta por el número de campos que indicas en el SELECT, y esto no es posible. Fíjate que tú misma pones fecha1, monto2, ... y al final fechaN y montoN, lo cual significa que no sabes cuántas columnas quieres mostrar, cuando SQL te obliga a saber qué columnas quieres mostrar, pudiendo ser éstas campos de tablas, operaciones, operaciones con campos, etcétera, pero siempre bien definidas a priori, mientras diseñas tu consulta. No pasa lo mismo con el número de filas obtenidas, el cual siempre puede variar en función de las condiciones. Bueno, espero que esta parrafada sirva para que me entiendas. Saludos.
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 10:00.