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

Consulta con combinando inner join con outer join

Estas en el tema de Consulta con combinando inner join con outer join en el foro de Bases de Datos General en Foros del Web. Hola: Tengo que hacer una consulta que para mi es muy complicada por que no controlo mucho la reunion natural ni ese tipo de consultas... ...
  #1 (permalink)  
Antiguo 13/02/2009, 03:33
 
Fecha de Ingreso: septiembre-2008
Mensajes: 30
Antigüedad: 15 años, 7 meses
Puntos: 0
Consulta con combinando inner join con outer join

Hola:

Tengo que hacer una consulta que para mi es muy complicada por que no controlo mucho la reunion natural ni ese tipo de consultas...

os cuento:
necesito informacion de 3 tablas

TABLA1: sutancia
idsustancia | nombre

TABLA2: resultado
idresultado | idanalitica |idsustancia | resultado


TABLA3:comentario
idcomentario |idanalitica | idsustancia | comentario

una sustancia para una analitica puede tener
solo comentario
comentario y resultado
solo resultado

y quiero uqe aparezca todos los casos en la misma tabla

idanalitica | sustancia.nombre | resultado | comentario

5 | temperatura | 15 | No hay valor
5 | ph | No hay valor | no hay phmetro
5 | coliformes | 0 | incontables


se unir las tablas dos a dos.. pero no consigo el resultado cuando intento unir las tres... obtengo soluciones uqe no cuadran con o que yo quiero

si me pudieran dar una solucion me seria de mucha ayuda....
muchisimas gracias
  #2 (permalink)  
Antiguo 13/02/2009, 04:14
 
Fecha de Ingreso: septiembre-2008
Mensajes: 30
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Consulta con combinando inner join con outer join

Añado aqui alguna de las consultas que he probado por si acaso no estoy desencaminada y sobre esto es facil corregir.. pero no logro encontrar como obtener el resultado de forma correcta


# 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)

y en realidad yo quiero que salgan todos los resultados de la analitica no
solo los que tengan comentario:


# 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)


gracias
  #3 (permalink)  
Antiguo 13/02/2009, 11:14
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Consulta con combinando inner join con outer join

Ponnos todas las tablas y sus campos, e infórmanos sobre cómo las relacionas (no he visto la tabla de analítica, que es fundamental para entender tu estructura).

Última edición por jurena; 13/02/2009 a las 12:11
  #4 (permalink)  
Antiguo 13/02/2009, 12:07
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Consulta con combinando inner join con outer join

Has probado asi:
Código sql:
Ver original
  1. SELECT t1.abreviatura, t2.resultado, t3.comentario
  2. FROM sustancia t1
  3. LEFT JOIN detalleanalitica t2 ON t1.gidsustancia= t2.gidsustancia
  4. LEFT JOIN detallecomentario t3 ON t1.gidsustancia= t3.gidsustancia
  5. WHERE t2.gidanalitica= 29 AND t3.gidanalitica=29
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #5 (permalink)  
Antiguo 13/02/2009, 18:46
 
Fecha de Ingreso: septiembre-2008
Mensajes: 30
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Consulta con combinando inner join con outer join

Hola de nuevo,

hice esa consulta que me pusisteis y me vuelve a dar el mismo resultado que tenia, es que cambia si le pongo algun parentesis.. falta algo? creo que no ..y este es el resultado:

[CODE]# select t1.abreviatura,t2.resultado, t3.comentario from sustanci
a t1 left join detalleanalitica t2 on t1.gidsustancia=t2.gidsustancia left join
detallecomentario t3 on t1.gidsustancia= t3.gidsustancia where t2.gidanalitica=
29 and t3.gidanalitica=29;

[CODE]
el resultado vuelve a ser:
abreviatura | resultado | comentario
-------------+-----------+---------------
pH | 7.17 | 2
Temp | 27 | 2
(2 rows)

si son los comentarios que tienen tambien resultado...
pero no aparecen los resultados que no tienen comentario por ejemplo..

voy a intentar explicar mejor mis tablas:
tengo las tablas:

TABLA1: sutancia
idsustancia | nombre

TABLA2: resultado
idresultado | idanalitica |idsustancia | resultado


TABLA3:detallecomentario
idcomentario |idanalitica | idsustancia | comentario

Tabla 4: analitica
gidanalitica | fecha | gidpozo

(para esta consulta la tabla pozo no interesa: pozo con tiene gidpozo y datos del pozo...)

la consulta que quiero es para una analitica: obtener todos las sustacias de las que se ha dicho algo para esa analitica, sea un comentario o un resultado...

os dibujo el modelo relacional por si se ve mas claro:
Código HTML:
                                                comentario(atributo)
                                                /
                  --------------<detallecomentrario>---------------
analitica                                                               sustancia
    (entidad)----------------<detalleresultado> ---------------    (entidad)
                                              \             
                                            resultado(atributo)
la entidad analitica se relaciona con la sustancia a traves del detallecomentario
y de detalle resultado...
de esta forma cada analitica se relacionara con la sustancia que yo quiera (y no siempre con las mismas)
tambien asi de esta manera, puede haber el par:

idanalitica | idsustancia
<5,6>

relacionados con un comentario y un resultado,
relacionados solo con un comentario
relacionados solo con un resultado


idsustancia| abreviatura
<6, Temp>

idcomentario|idanalitica |idsustancia | comentario
<1, 5, 6, No hay phMetro>

idem con el resultado...
idresultado|idanalitica|idsustancia|resultado
<25, 5, 6, 7.7>

la importancia de las analiticas es que quiero sacar todas las sustancias que estan en una analitica junto con sus resultadosy comentarios

muchisimas gracias por ayudarme...
la verda que no se como resolverlo
  #6 (permalink)  
Antiguo 08/05/2009, 15:23
 
Fecha de Ingreso: septiembre-2008
Mensajes: 30
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Consulta con combinando inner join con outer join

Como no encontre la forma de hacer la consulta correctamete:
(esto es usando java)
lo que hice fue retornar un ArrayList<ResultSet>

con dos resultSet:

uno con la consulta:
select t1.abreviatura, t2.resultado from (sustancia t1 inner join
detalleanalitica t2 on t1.gidsustancia= t2.gidsustancia) where t2.gidanalitica=
29;

me saca
abreviatura| resultado

y otro con la consulta:
select t1.abreviatura, t3.comentario from (sustancia t1 inner join
detallecomentario t3 on t1.gidsustancia= t3.gidsustancia) where t3.gidanalitica=
29;

abreviatura|comentario


en vez de mostrarlos en la misma tabla
saco los resultados enun jtable y los comentarios en un tooltip..
pero del mismo modo seria facil añadir una los comentarios de cada sustancia a la tabla

muchas gracias por toda la atencion
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 11:00.