Re: Consulta que no acabo de resolver

From: Mario Burdman <mburdman(at)gmail(dot)com>
To: marta vicente romero <mviceromgvsig(at)gmail(dot)com>
Cc: POSTGRES <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Consulta que no acabo de resolver
Date: 2009-02-14 13:05:39
Message-ID: 14bba8590902140505x2cdd7ce5jaf6c4c9bb408753a@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Por lo que decis parecen ser 2 Left join, no estoy seguro de entender como
se relacionan las tablas confirmame si es:

sustancia<==0..n>detallea
sustancis<==0..n>detallecomentario

"Creo" que queres algo como esto?

select *
from (sustancia s left join detallea da on s.gidsustancia = da.gidsustancia)
left join detallecomentario dc on s.gidsustancia = dc.gidsustancia
where da.gidanalitica = ?

Saludos

On Sat, Feb 14, 2009 at 8:37 AM, marta vicente romero <
mviceromgvsig(at)gmail(dot)com> wrote:

> Voy a poner aqiu algunas de las pruebas que he hecho por si alguien ve
> algun fallo claro y me puede guiar un poco
>
> voy a quitar una tabla para que sea menos complicado:
>
> si solo tenemos:
> sustancia
> gidsustancia | abreviatura | ...
>
> detallea
> giddetallea| gidsustancia | gidanalitica | resultado
>
> detallecomentario (aqui ponemos directamente el comentario)
> giddetallecom | gidsustancia |gidanalitica | comentario
>
> yo he echo las siguientes preubas obteniendo los siguientes resultados:
>
> te pongo un ejemplo
>
> sustancia
> gidsustancia | abreviatura | ...
> <1,Temp>
>
> detallea
> giddetallea| gidsustancia | gidanalitica | resultado
> <1500, 1, 29, 27>
>
> detallecomentario (directamente pongo aqui el comentario)
>
> giddetallecom | gidsustancia |gidanalitica | comentario
> <5, 1, 29, No hay phmetro>
>
> # select t1.abreviatura, t2.resultado, t3.comentario from (susta
> ncia t1 inner join detalleanalitica t2 on t1.gidsustancia=
> t2.gidsustancia)right
> join detallecomentario t3 on t1.gidsustancia= t3.gidsustancia where
> t2.gidana
> litica= 29 and t3.gidanalitica=29;
>
> abreviatura | resultado | comentario
> -------------+-----------+---------------
> pH | 7.17 | no hay phmetro
> Temp | 27 | no hay phmetro
> (2 rows)
>
> (he hecho algunas pruebas mas.. si pongo los dos inner join com o left join
> o los dos como right join sale exactamente el mismo resultado .. y no lo
> entiendo..)
>
> y en realidad yo quiero que salgan todos los resultados de la analitica no
> solo los que tengan comentario:
>
> es decri existen 3 casos:
>
> que un par gidanalitica, gidsustancia se relacoinen por :
> uncomentario
> un resultado
> o un comentario y un resulado
> y yo quiero que me muestre todo...
>
> # select t1.abreviatura, t2.resultado from (sustancia t1 inner join
> detalleanalitica t2 on t1.gidsustancia= t2.gidsustancia) where
> t2.gidanalitica=
> 29;
>
> abreviatura | resultado
> -------------+-----------
> Colif_tot | 0
> Dureza_tot | 690
> NitritoNO2 | 0.02
> Ca | 140
> NitratNO3 | 100
> NH4Amonio | 0.2
> Conduct | 2030
> pH | 7.17
> Cloro_resl | 0.8
> CloruroCl | 389.64
> Mg | 550
> Temp | 27
> Estrept | 0
> Alcalin | 358.68
> ColifFeca | 0
> (15 rows)
>
> aqui faltarian los comnetarios de los que tienen resultado, y las
> sustancias que no tienen resultado y si comentario pero no se como se puede
> añadir a esto...
>
> espero que me puedan ayudar...
> muchas gracias
>
>
>
>
> El 12 de febrero de 2009 19:48, marta vicente romero <
> mviceromgvsig(at)gmail(dot)com> escribió:
>
> Hola
>> Pido ayuda con una consulta, que no acabo de resolver:
>>
>> Tengo las tablas:
>>
>> sustancia
>> gidsustancia | abreviatura | ...
>>
>> detallea
>> giddetallea| gidsustancia | gidanalitica | resultado
>>
>> detallecomentario
>> giddetallecom | gidsustancia |gidanalitica | gidcomentario
>>
>> comentario
>> gidcomentario | comentario
>>
>> lo que quiero es obtener:
>> abreviatura, resultado , comentario
>>
>> teniendo en cuenta que existen varias posibilidades:
>> que el resultado tambien tenga comentario
>> que la sustancia solo tenga resultado para esa analitica, por lo que el
>> comentario es null
>> o que la sustancia solo tenga comentario para esa analitica, por lo que el
>> resultado es null
>>
>> la conulta quitando el comentario seria para a analitica 25 por ejemplo:
>> Select abreviatura, resultado from sustancia, detallea where
>> sustancia.gidsustancia = detallea.gidsustancia and gidanalitica= 25;
>> o con un inner join...
>>
>>
>> El problema es que no logro entender como construir la tabla con el
>> comentario y las posibilidades que he explicado.. con inner join y outer
>> join .. no se como construirlo para que sea correcto
>> alguien me puede dar una idea...
>>
>> muchas gracias
>>
>
>

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Silvio Quadri 2009-02-14 16:44:46 Re: High Load Average
Previous Message marta vicente romero 2009-02-14 11:37:33 RE:Consulta que no acabo de resolver