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 < [email protected]> 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 < > [email protected]> 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 >> > >
