Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/03/2013, 16:09
Arenas
 
Fecha de Ingreso: abril-2002
Mensajes: 33
Antigüedad: 22 años
Puntos: 0
Query combinando tablas

Buenas,

me veo ante un gran problema, un problema al que no llego, realmente no se si es posible llegar, a ver si resumo bien y encuentro un genio, solo me queda poner el problema en un sitio público, y ¿que lugar mejor que aqui?

Ahi va el problema:

TABLA_A:
id_producto
descripcion_producto

TABLA_B:
id_estado_producto
id_producto (vinculo con la tabla a)
estado (reservado,liberado, vendido) donde liberado es cuando se anula una reserva
fecha_creacion

Necesito hacer un join tabla A, tabla B, pero necesito solo contar los productos disponibles:
disponible es:
- que no este en la tabla b: TABLA_B.id_producto IS NULL
- que si este en la tabla b pero que no posea los estados ni reservado ni vendido, pero ojo, puede poseer varios resgistros con el mismo id_producto

Ya he probado todo y estoy algo bloqueado, estoy pensando añadir un nuevo campo que maque si está disponible o no en la tabla_a e ir modificándolo, pero es una chapuza y me gustaría conseguirlo con una sola query.

Mi conclusión (erronea)
SELECT id_producto from
TABLA_A Left join TABLA_B on TABLA_A.id_producto=TABLA_B.id_producto
where ((TABLA_B.id_producto IS NULL) or (TABLA_B.estado!="vendido" and TABLA_B.estado!="reservado"))

El problema de esta sentencia es que me lanza igualmente resultado si hay uno liberado, independientemente de que solo querría el resultado si no esta ni vendido ni reservado, vamos que me da igual que se liberara si posteriormente cree un nuevo registro donde si se vendió o reservó.

Nunca hice query dentro de query, igual es la opcion, porque igual me resulta muy util el campo fecha creación.

Si alguien entendió mi problema yo ya desisto, llevo 4 horas intentando dar solución a este problema matemático, y ya soy consciente de yo soy de letras... me doy por vencido.
__________________
Sergio Sánchez
www.sergio.es