Re: Ayuda subselect con limit

From: Linos <info(at)linos(dot)es>
To: Emanuel Calvo Franco <postgres(dot)arg(at)gmail(dot)com>
Cc: pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Ayuda subselect con limit
Date: 2009-01-24 10:48:17
Message-ID: 497AF1F1.3070907@linos.es
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Emanuel Calvo Franco escribió:
> El día 22 de enero de 2009 20:22, Alvaro Herrera
> <alvherre(at)alvh(dot)no-ip(dot)org> escribió:
>> Linos escribió:
>
> Bueno, encontré un par de cosas, modifique la consulta
>
> SELECT lin.id_ticket,
> lin.linea_id,
> mo.referencia,
> art.talla,
> lin.pvp_teorico,
> lin.pvp_real
> FROM
> (select * from (SELECT ofe.oferta_id, ofe.nombre
> FROM modelo as mo2, oferta AS ofe
> JOIN modelo_oferta AS tie_ofe ON tie_ofe.id_oferta =
> ofe.oferta_id
> WHERE tie_ofe.id_modelo = mo2.modelo_id
> ORDER BY prioridad DESC) as tabla limit 1) as tabla_oferta,
> ticket_cabecera AS cab
> JOIN ticket_linea AS lin ON lin.id_ticket = cab.ticket_id
> JOIN articulo AS art ON art.articulo_id = lin.id_articulo
> JOIN modelo AS mo ON mo.modelo_id = art.id_modelo
> WHERE lin.modificado_manual IS TRUE
> AND lin.id_oferta IS NULL
> ORDER BY lin.id_ticket,
> lin.linea_id;
>
> Fijate que declare nuevamente dentro de la subquery modelo (as mo2)
> entre otras modificaciones (fijate que saque los schemas porque no los tenia,
> busca las tablas que tienen os schemas y completalo.
> la consulta asi anda aunque se muy bien que no retorna lo que queres, lo
> mas importante es que la subconsulta no me tira error, a partir de ahi
> modificala
> para que te devuelva lo que necesitas.
>
>

Asi me devuelve siempre la oferta con mas prioridad igual que si hiciera el
subselect normal en el left join y limitara por 1, en principio con la query en
la que uso la subquery dentro del left join y dentro de la subquery igualo a la
oferta con mas prioridad para cada referencia (la query q explico en el primer
correo q envie a la lista) obtengo los resultados que quiero pero estaba
buscando algo mas simple y mas rapido porque me parecia que se me debia estar
escapando algo (me parecia demasiado lenta y compleja la query).

Supuse que en postgresql habria una manera mejor de limitar el resultado de una
subquery para usarla en un join (una manera mejor de no tener mas de un
resultado por referencia aunque estuviera en varias ofertas) pero parece q no
hay ninguna, a lo mejor podria usar una funcion que encontre hace tiempo para
calcular el rownum en la salida y filtrar por el rownum de la subquery pero
estaba intentando encontrar algo mas simple y que no me tuviera que hacer
compilar y modificar la configuracion en las bases de datos (que son mas de 20,
una por tienda).

Emanuel gracias por tu tiempo y por intentar ayudarme con ideas nuevas.
Un saludo.
Miguel Angel.

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Miljan Rosales 2009-01-24 15:20:28 Postgres.exe lentitud
Previous Message juan jaimes 2009-01-24 05:45:28 Re: funcion geometrica