![]() |
Problema con consulta not in (select ....)
Hola, tengo un problemilla con uhna consulta not in, no son mi fuerte pues generalmente tengo lagún atasco con ellas.
Bueno primeramente deciros que utilizo interbase 6.0, la consulta la tengo en una procedimiento almacenado, pero bueno eso no es trascendental para el problema ya que todas las de este tipo las he hecho de esta forma y no me han dado problemas. Os detallo como va el asunto: Tengo 2 tablas una de estancias y otra de facturas de la siguiente forma: estancia habfact cod_hab cod_fact fechai cod_hab fechaf cod_r cod_cli cod_emp cod_r estancia habfact 100 1 10/09/05 100 20/09/05 1 2 2 1 101 2 10/10/05 101 20/10/05 2 0 0 2 102 3 ... 102 ... 3 ... ... 3 Hay os he puesto los campos de ambas tablas, siendo los campos importantes cod_hab(habitacion) y cod_r (reserva) ,lo que pretendo hacer es que me salgan todas las estancias que no están facturadas, pero tiene el siguiente inconveniente: se relacionan por dos campos cod_hab y cod_r, el código de reserva puuede tener más de una habitacion (cod_hab) asignada y una misma habitacion(cod_hab) puede pertenecer a diferentes (cod_r), y por si fuera poco yo igual sólo quiero facturar un cod_r con un cod_hab, es decir, que de una reserva sólo quiero facturar una habitación y no todas ó facturo una habitación perteneciente a una reserva, pero también pertenece a otras eso sí en diferentes fechas. Bueno basicamente yo se lo que quiero sacar pero no se como, lo que yo hago es lo siguiente: Código:
No se si me he explicado muy bien u os he liado más, si no lo entendeís por favor decidmelo y me intento explicar mejor, aunque la verdad es que no se como hacerlo. Gracias por su ayuda. |
Resp
Aparte de que el codigo esta un poco largo.
Para que lo puedan leer primero deberias comensar por darles formato en vez de usar la etiqueta de usa . Ya que a muchas persoans no le gusta leer codigo muy largo y menos a los programadores. Por que de lo cantrario est aun poc dificil que te respondan. |
Lo resumo
Basicamente lo que quiero hacer es una consulta Not In que cumpla 2 condiciones a la vez, ya que si pongo un not in con la 1ª condición y luego otro con la 2ª no me sirve, sería lo mismo que un inner join , pero con delphi 6 no me deja.
Es imprescindible que cumpla las 2 condiciones a la vez. Siento a ver liado la madeja Muchas gracias. |
Resp
|
Gracias
Mil gracias es lo que buscaba.
Graciassssssssssssssss. |
Perdona
Me he dado cuenta que me falla en algunos casos, lo que yo busco el algo como:
Código:
select * Ya que esto me falla si hay algun valor de una campo iguale en otra tupla. |
Resp
Asi quedaria |
yo lo que me refiero es que 2 campos, p ej, Id y Hab (los 2 campos a la vez) no se encuentren en una misma tabla en una misma tupla.
algo asi como: Código:
select id, hab No se si me explico ó igual es que ya me ozeco y no entiendo tu ejemplo. Gracias por tu ayuda y por intentar solventar mi problema |
Resp
Por que no haces una pregunta bien concreta de uan vez y por todas.
|
Resp
In es par aun solo valor asiq ue haslo separado
Y has tus pregustas concretas. Y usa la etiquetas de sql cuando el codigo sea sql delphi cuando se delphi. |
Perdona de verdad que te moleste, esa consulta es la que tengo yo hecha , pero no coje ambos valores de una misma tupla y yo lo que necesito es que coja ambos de una misma tupla de la misma tabla.
|
Resp
Hago un ultimo intento por entenderte.
Mira me puedes poner un ejemplo de la estructura de la dos tablas y algunos datos y la intruccion sql y que dberia devolverte para resolverte el problema que tienes. Pero por favor dedica un tiempito hacer loq ue te pido para que te pueda ayudar. |
Gracias por tu interes
Siento no haberte escrito antes y entiendo que despues
de todo lo que has peleado por la consulta igual te haya enojado , no es falta de interés , es problema con el internet, nos hemos quedado sín él, aparentemente lo hemos arreglado , pero vuelve a fallar. Bueno no quiero aburriete con los problemillas. Al grano: Todo lo que me pides se encuentra en el primer hilo , te lo vuelvo a escribir haber si está vez lo hago mejor. Tengo 2 tablas estancia y habfact con los siguientes campos: Cita:
Cita:
facturadas entre 2 fechas. Las estancias las saco de la tabla estancias y las facturas de la tabla habfact, como podemos comprobar las relaciones se hacen con 2 campos cod_hab y cod_r que están en ambas tablas. La consulta sql queda:
Tal y como lo hacemos tiene un problema, obseervando los valores ejemplo, la estancia de cod_hab=100 y cod_r=1, está facturada, lo mismo pasa con la estancia de cod_hab=102 y cod_r=3, hasta aquí todo bien, el problema está en que con este código la estancia de cod_hab=100 y cod_r=2 también me aparece como facturada y no tendría que ser así, ya que me lo pone facturada cuando ya hay en la tabla un cod_hab y un cod_r de igual valor al de estancia aunque no sea en la misma tupla. Ambas cosas a la vez. Espero haberme explicado ahora mejor, siento haberme explallado tanto pero creo que es la única forma de comprenderlo, ya que el asunto es un poco dificil. Gracias por intentar ayudarme . Eternamente agradecido. PD: Lo valores de ejemplo, lo siento, no consigo que te aparezcan en forma de 2 tablas.Perdón. |
La franja horaria es GMT +2. Ahora son las 21:31:11. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi