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

Problema subconsulta/join

Estas en el tema de Problema subconsulta/join en el foro de Mysql en Foros del Web. Hola a todos, tengo una duda con una consulta que me está volviendo loco, es una consulta a una sola tabla llamada "pr_saldos_plan_pago_mes" la idea ...
  #1 (permalink)  
Antiguo 23/08/2012, 09:33
 
Fecha de Ingreso: agosto-2012
Mensajes: 7
Antigüedad: 11 años, 8 meses
Puntos: 0
Problema subconsulta/join

Hola a todos, tengo una duda con una consulta que me está volviendo loco, es una consulta a una sola tabla llamada "pr_saldos_plan_pago_mes" la idea es filtrar el campo "numero_prestamo" con sus respectivos datos que concuerden con la consulta, así no se repetirá el "numero_prestamo" y arrojará los valores seleccionados, mi problema es al tratar de filtrar el campo "codigo_tipo_saldo", que me arroje el dato de la misma linea de mi consulta, pero es el único que no concuerda, siempre me arroja el primer valor encontrado en la base de datos, y no tiene relación con la línea seleccionada, a continuación les adjunto una imagen para que me puedan entender mejor.

El rectángulo rojo es la línea que necesito sacar, todo sale sin problemas, a excepción del último dato, intenté con subconsultas, joins y consultas normales agrupadas y nada me resulta, necesito el dato del círculo amarillo, y me arroja el círculo azul, me quiero volver chango!!!!



link directo: http://img528.imageshack.us/img528/7724/consultafallida.jpg

query:


SELECT numero_prestamo, Max(numero_cuota) AS ultima_cuota, Max(numero_cuota)+1 AS siguiente_cuota, Max(periodo) AS ultimo_periodo, codigo_tipo_saldo FROM pr_saldos_plan_pago_mes where numero_prestamo = 1 GROUP BY numero_prestamo
  #2 (permalink)  
Antiguo 23/08/2012, 09:52
Avatar de jlct  
Fecha de Ingreso: abril-2012
Ubicación: Venezuela
Mensajes: 148
Antigüedad: 12 años
Puntos: 19
Respuesta: Problema subconsulta/join

Al abrir el link dice que no se puede mostrar la imagen xq contiene errores.!
  #3 (permalink)  
Antiguo 23/08/2012, 10:03
 
Fecha de Ingreso: agosto-2012
Mensajes: 7
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Problema subconsulta/join

mmm que raro, a mi me sale el link directo y la imagen pegada, gracias por avisarme, lo subo al drop box:

[URL="https://www.dropbox.com/s/zrm1qnlpvgtilbp/consulta_fallida.jpg"]https://www.dropbox.com/s/zrm1qnlpvgtilbp/consulta_fallida.jpg[/URL]

https://www.dropbox.com/s/zrm1qnlpvgtilbp/consulta_fallida.jpg
  #4 (permalink)  
Antiguo 23/08/2012, 10:26
Avatar de jlct  
Fecha de Ingreso: abril-2012
Ubicación: Venezuela
Mensajes: 148
Antigüedad: 12 años
Puntos: 19
Respuesta: Problema subconsulta/join

Eso pasa porque ese es el valor del 1er registro intenta con esto:

SELECT numero_prestamo, Max(numero_cuota) AS ultima_cuota, Max(numero_cuota)+1 AS siguiente_cuota, Max(periodo) AS ultimo_periodo, (Select codigo_tipo_saldo from pr_saldos_plan_mes where numero_cuota=Max(numero_cuota) order by 1 Desc limit 1) as codigo_tipo_saldo FROM pr_saldos_plan_pago_mes where numero_prestamo = 1 GROUP BY numero_prestamo

Espero te sirva!
  #5 (permalink)  
Antiguo 23/08/2012, 10:40
 
Fecha de Ingreso: agosto-2012
Mensajes: 7
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Problema subconsulta/join

Muchas gracias!! lo copie tal cual y tenía un pequeño error de sintaxis que arreglé, quedaría así:


SELECT numero_prestamo, Max(numero_cuota) AS ultima_cuota, Max(numero_cuota)+1 AS siguiente_cuota, Max(periodo) AS ultimo_periodo, (Select codigo_tipo_saldo from pr_saldos_plan_pago_mes where numero_cuota=Max(numero_cuota) order by 1 Desc limit 1) as codigo_tipo_saldo FROM pr_saldos_plan_pago_mes where numero_prestamo = 1 GROUP BY numero_prestamo

pero ahora me dice que hay un error:

Lookup Error - MySQL Database Error: Invalid use of group function

le quité el group by, pero me sigue mandando el error, creo es entrando a la subconsulta, pero jugaré mientras con tu query, tiene mucho mejor lógica que la mía, debe ser por ahi algún pequeño error, seguiré tratando de domar la consulta si encuentro repsuesta les mantengo informados, y gracias jlct
  #6 (permalink)  
Antiguo 23/08/2012, 13:23
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Problema subconsulta/join

Hola fzeromusic:

En realidad no me queda queda claro qué es lo que quieres obtener... es decir, cuál es el criterio que sigues para que te regrese el 53 como valor de la columna CODIGO_TIPO_SALDO, es decir, no es el mínimo (el mínimo sería 1), tampoco sería el máximo (el máximo sería 84). Trata de explicar un poco mejor cuál es el criterio que quieres utilizar para agrupar la información. Si una explicación lógica podría pensar que elegiste el 53 al azar, o que hay algún error de dedo...

Con respecto a la consulta que propone jlct, el problema está en la subconsulta. La función MAX NO PUEDE SER INCLUIDA EN LA SECCIÓN WHERE...

Código:
SELECT ... 
( Select codigo_tipo_saldo 
  from pr_saldos_plan_pago_mes 
  where numero_cuota=Max(numero_cuota) order by 1 Desc limit 1
) as codigo_tipo_saldo FROM .....
Toda esta subconsulta, si la ejecutas de manera separada marcará error por la parte que está marcada en rojo... para utilizar la función MAX como criterio de filtro deberías utilizarla en la sección HAVING o en su defecto hacer una consulta más o menos así:

Código:
Select codigo_tipo_saldo 
  from pr_saldos_plan_pago_mes 
  where numero_cuota=(Select Max(numero_cuota) from tabla .......) 
order by 1 Desc 
limit 1
Es decir, meter la condición en como otra sobconsulta, pero nunca directamente.

Te repito, para poder darte una posible solución tendrías que explicarnos un poco mejor cuál es la lógica de tu consulta.

Saludos
Leo.
  #7 (permalink)  
Antiguo 23/08/2012, 13:31
Avatar de jlct  
Fecha de Ingreso: abril-2012
Ubicación: Venezuela
Mensajes: 148
Antigüedad: 12 años
Puntos: 19
Respuesta: Problema subconsulta/join

Tienes razon, leonardo_josue se me paso eso por alto. Segun lo que le entendi el quiere que regrese es el ultimo valor que tenga la columna codigo_tipo_saldo que en este caso seria el 53 aunque revisando bien la subconsulta que sugeri tampoco daria el resultado deseado ya que para el numero_cuota existe un valor mas alto.
  #8 (permalink)  
Antiguo 24/08/2012, 07:44
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Problema subconsulta/join

Así es, es por eso que no entiendo cuál es el criterio que sigue fzeromusic para tomar el valor de codigo_tipo_saldo = 53... si se toma en cuenta sólo los elementos de numero_cuota = 153, los valores para codigo_tipo_saldo son 1, 2, 6, 53 y 55... por lo tanto el 53 no es ni el mínimo no el máximo, al ser un valor intermedio tenemos un problema.

Es por eso que le pedía que nos explicara cuál es la lógica que tiene que seguir su consulta, más que mostrarnos qué es lo que ha intentado hacer.

Saludos
Leo.
  #9 (permalink)  
Antiguo 28/08/2012, 09:10
 
Fecha de Ingreso: agosto-2012
Mensajes: 7
Antigüedad: 11 años, 8 meses
Puntos: 0
Respuesta: Problema subconsulta/join

Hola a todos disculpen por la tardanza, andaba apurado con otros proyectos pero ya retomé este, miren conseguí hacer una consulta que me arroja ya casi esa línea que necesito, el problema aquí es que se repite ese numero de cuota, y como bien han dicho el código tipo saldo no tiene ninguna lógica de mínimo o máximo, en realidad solo es un código que se le da, para saber que formato tiene ese saldo, y ya se revisa conforme a un catálogo, la consulta es la siguiente:

Código:
SELECT 
   plan.numero_prestamo, 
   plan.numero_cuota, 
   plan.numero_cuota+1 AS proxima_cuota,
   plan.periodo,
   plan.codigo_tipo_saldo
FROM 
   pr_saldos_plan_pago_mes plan
WHERE 
   plan.numero_prestamo = 1 AND
   plan.numero_cuota IN
      ( SELECT 
            MAX( numero_cuota ) AS ultima_cuota 
        FROM 
            pr_saldos_plan_pago_mes 
        WHERE 
            numero_prestamo = 1 )
y al final me manda este resultado, el cual ya está muy cercano a lo que necesito

Código:
numero_prestamo	numero_cuota	proxima_cuota	periodo	codigo_tipo_saldo
1		153		154		12	55
1		153		154		12	6
1		153		154		12	2
1		153		154		12	53
1		153		154		12	1
ahor abien, si trato de ordenarlo asc o desc, o poner limite, etc.....me arrojará 55 o 1, ahor asolo tengo que hacer un filtro mas el cual el día de hoy me dispongo a investigarlo, si alguien tiene unos minutos se agradecerá infinitamente su ayuda, saludos a todos tampoco se puede buscar por la última fecha agregada, hay un campo de fecha el cual no está en la consulta, pero todos son cargados en el mismo momento, incluso marca que fueron cargados en el mismo segundo

Etiquetas: join, select, tabla, campos
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 02:11.