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 >
