Hola a todos
Os explico un poco el escenario de mi consulta.
Tengo 2 tablas con la siguiente estructura: (con un numero alto de
registros)
TABLA1 --> Id1 | IdAlmacen | IdLibro | Version
TABLA2 --> Id2 | IdAlmacen | IdLibro | Version
Lo que quiero es compararlas entre ellas para poder obtener los
IdLibro de la tabla1 que no estan en la tabla2, o que estando, tienen
diferente version, para un IdAlmacen determinado.
Por ejemplo:
Tabla1
Id1 | IdAlmacen | IdLibro | Version
1 1 1 0
2 1 2 0
3 1 3 1
4 1 4 0
5 1 5 1
6 2 1 0
7 2 10 0
8 3 11 0
Tabla2
Id2 | IdAlmacen | IdLibro | Version
1 1 1 0
2 1 2 0
3 1 3 0
4 1 5 0
5 1 6 0
6 2 1 0
7 2 10 0
Ahora, por ejemplo, quiero comparar el IdAlmacen=1
El resultado debe ser algo asi:
IdAlmacen | IdLibro | Version
1 3 1 < El libro esta en las
dos tablas, pero tiene diferente version
1 4 0 <-- El libro esta en
Tabla1 pero no en tabla2
1 5 1 < El libro esta en las
dos tablas, pero tiene diferente version
* El libro 6 del almacen 1 no debe salir porque no esta en la tabla1 aunque
este en la tabla2
Ahora, por ejemplo, quiero comparar el IdAlmacen=2
El resultado debe ser algo asi:
IdAlmacen | IdLibro | Version
<-- No hay nada ni
nuevo ni con version diferente en Tabla1 en el Almacen2
Ahora, por ejemplo, quiero comparar el IdAlmacen=3
El resultado debe ser algo asi:
IdAlmacen | IdLibro | Version
3 11 0 < El libro esta en las
dos tablas, pero tiene diferente version
En definitiva, quiero comparar libros del mismo almacen en las dos tablas,
tomando como referencia la tabla1.
He logrado hacerlo mediante SELECT ... WHERE ... NOT IN ETC
pero estoy seguro de que se puede hacer mediante joins de manera mas
efectiva.
Si se os ocurre algo, estare muy agradecido si lo compartis conmigo ;)))
Espero haberme explicado un poco... ;)
Muchas gracias anticipadas.
Leer las respuestas