#1
|
|||
|
|||
Duda con consulta SQL en abap
Hola a todos.
Queria saber si el sql de abap soporta los conjuntos. Es decir, si hay alguna manera de hacer la siguiente consulta select * from tabla_A where tabla-campo not in ( select campo from tabla_B ) Muchas gracias a todos |
#2
|
|||
|
|||
Hola,
select * from tabla_A where tabla-campo not in ( select campo from tabla_B ) Yo creo que si pones un ranges para campo tabla_b y lo llenas previamente, RANGES: RNG_campo FOR tabla_b-campo. RNG_campo-SIGN = 'E' RNG_campo-OPTION = 'EQ'. RNG_campo-LOW = tabla_b-campo. RNG_campo-HIGH = SPACE. APPEND RNG_campo. luego la instruccion seria select * from tabla_A where tabla-campo in RNG_campo. No estoy seguro si es esta tu pregunta, espero haberte podido ayudar. Saludos |
#3
|
||||
|
||||
Una posible solución evitando sentencias negativas en los SELECTs, seria.
Seleccionar todos los registros de la TABLA A. Con esta tabla accedemos a la TABLA B. Recorremos la TABLA A y eliminamos los registros que esten en la TABLA B. En la TABLA A tenemos los registros que no esta en la TABLA B. Creo que es esto lo que buscas. |
#4
|
|||
|
|||
Gracias a los dos.
En cuanto a la primera solución no me vale porqué con el rango me coge todos los valores comprendidos entre el mayor y el menor y yo no necesito todos sino unos cuantos dentro de ese rango. La segunda solución es la que he pensado yo lo q pasa que quería ver la forma de realizarlo en una única consulta SQL y no tener que hacer loops a tablas internas. Muchas gracias de nuevo |
#5
|
|||
|
|||
En un rango puedes indicarle valores individuales, rangos, excluir valores individuales, exluir rangos, mayor, menor, etc, etc. Revisa los campos Sign y Option. Saludos |
#6
|
||||
|
||||
Por eficiencia es mejor hacer un loops simple a una tabla interna que utilizar rangos con sentencias negativas. Hay que evitar los accesos a Base de datos lo máximo posible porque es lo que mas recursos consume. Saludos. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|