Como hacer inner join que devuelve varias filas.

24/05/2005 - 22:49 por Jose Antonio | Informe spam
Hola grupo.

Tengo un problema con una sentencia select que se me resiste y no logro dar
con una solucion adecuada:

Tengo una tabla pisos con el codigo y la descripción, otra de Recibos con el
codigo y la descripcion.

En otra tabla lineasrecibos tengo los diferentes recibos que paga cada uno
de los pisos, de esta forma:

Pisos: idpiso int
descripcion varchar(30)


Recibos: idrecibo int
detalle varchar(40)
importe decimal(10,2)

Lineasrecibos: idpiso int
idrecibo int

cada piso tiene varias lineas en Linearecibos porque todos pagan mas de un
recibo.

En ocasiones tengo que realizar un select en el que se detalle informacion
con exclusion de uno o mas recibos.

yo hago el select asi:

select idpiso,descripcion from pisos join (select idpiso from lineasrecibos
where idrecibo not in(10)) r on r.idpiso=idpiso.

no me funciona porque si un piso paga el recibo 10 y el recibo 12 me sale la
linea del recibo 12 y necesito que si esta excluido en el in, aunque tenga
otros recibos no salga.


Saludos y gracias.

Preguntas similare

Leer las respuestas

#6 José Antonio
25/05/2005 - 14:07 | Informe spam
Es eso, pero puede ser que quiera excluir los pisos que contengan mas de un
recibo.

Como seria el select si quiero escluir los pisos que contengan los recibos
10,.11 y 12?

Saludos

"Alejandro Mesa" escribió en el
mensaje news:
Mostrar la cita
#7 Alejandro Mesa
25/05/2005 - 14:19 | Informe spam
Trata:

select idpiso, descripcion
from pisos as p
where not exists (
select *
from lineasrecibos as l
where l.idpiso = p.idpiso and idrecibo in (10, 11, 12)
)


AMB

"José Antonio" wrote:

Mostrar la cita
#8 José Antonio
25/05/2005 - 15:02 | Informe spam
Ok. Gracias a todos.
"Alejandro Mesa" escribió en el
mensaje news:
Mostrar la cita
#9 klunin
25/05/2005 - 15:36 | Informe spam
haber depues de leer todas estas exposiciones logré entender lo que quieres
hacer tu estas buscando como hacer
idrecibo in (10, 11, 12, .) puede ser uno o más
tuve el mismo problema bueno en mi caso como era una tabla que no implicaba
muchas filas lo que hice fue construir la consulta sql segun (en tu caso el
"idrecibo") se seleccione para mostrar la consulta y luego hacia
Conexion.Execute "sentencia SQL" y pues me resultó, pero algo leí sobre los
Create function, si quieres salir rápido del problema te recomiendo lo que
hice o puedes buscar mas ayuda acerca de las funciones en SQL, si consigues
como hacerlo con los function me pasas el dato , pq no
encontré ayuda acerca de como hacer lo que pides desde una simple consulta.

GYG

"Jose Antonio" escribió:

Mostrar la cita
#10 Jose Antonio
25/05/2005 - 18:52 | Informe spam
Una pregunta:

Es normal que con la subconsulta el select sea un poco mas lento que con el
join?

Saludos
"José Antonio" escribió en el
mensaje news:
Mostrar la cita
Ads by Google
Search Busqueda sugerida