# Registros de una tabla que no estan en otra (NOT IN)

**URL:** <https://foros.velneo.com/t/registros-de-una-tabla-que-no-estan-en-otra-not-in/8729>\
**Category:** Velneo\
**Created:** [24 Febrero, 2016 13:28 UTC](https://foros.velneo.com/t/registros-de-una-tabla-que-no-estan-en-otra-not-in/8729 "2016-02-24T13:28:59Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![alberto\_nudman](https://avatars.discourse-cdn.com/v4/letter/a/e68b1a/32.png) [@alberto\_nudman](https://foros.velneo.com/u/alberto_nudman)\
**Post date:** [24 Febrero, 2016 13:28 UTC](https://foros.velneo.com/t/registros-de-una-tabla-que-no-estan-en-otra-not-in/8729/1 "2016-02-24T13:28:59Z")

</div>

Amigos,

Estoy de cabeza intentando conseguir una búsqueda de los registros de una tabla maestra, que me retorne todos aquellos que NO ESTÁN en una tabla histórica que tiene un enlace maestro a esta última.

Tengo la tabla DESPACHOS que es maestra. Y tengo la tabla CB\_DESPACHOS\_OPER, que tiene dos enlaces maestros: uno a DESPACHOS, y uno a OPER. En la tabla CB\_DESPACHOS\_OPER grabo los despachos que están relacionados con alguna operación (OPER), y la relación de Id de DESPACHO con el Id de OPER.

Pues bien, quiero todos los despachos que NO están relacionados con OPER, lo que sería equivalente en SQL algo así como…  
SELECT \* FROM DESPACHOS  
WHERE DESPACHOS.Id NOT IN (SELECT Id FROM CB\_DESPACHOS\_OPER)

Me gustaría hacer esto sin tener que usar cestas… ¿será posible?

Gracias!

---

<div class="post-metadata">

**Author:** ![Miguel.arhes](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/miguel.arhes/32/5555_2.png) [@Miguel.arhes](https://foros.velneo.com/u/Miguel.arhes)\
**Post date:** [24 Febrero, 2016 14:23 UTC](https://foros.velneo.com/t/registros-de-una-tabla-que-no-estan-en-otra-not-in/8729/2 "2016-02-24T14:23:19Z")

</div>

En la tabla despachos un campo (numero de oper), un indice condicionado a (numero de oper = 0) o isempty o lo que sea, en la tabla oper, actualización a la tabla despachos campo (numero de oper) formula 1. cuando leas por ese indice solo estan los que no tienen operaciones, bueno eso se me ha ocurrido de repente, puede haber mas formas, clar.

---

<div class="post-metadata">

**Author:** ![mivimu](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/mivimu/32/5052_2.png) [@mivimu](https://foros.velneo.com/u/mivimu)\
**Post date:** [24 Febrero, 2016 16:59 UTC](https://foros.velneo.com/t/registros-de-una-tabla-que-no-estan-en-otra-not-in/8729/3 "2016-02-24T16:59:37Z")

</div>

Prueba algo asi:  
recorrer DESPACHOS  
cargar historico cb\_des\_oper  
if syslistsize = 0  
añadir a salida

---

<div class="post-metadata">

**Author:** ![manuel.rd](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/manuel.rd/32/3508_2.png) [@manuel.rd](https://foros.velneo.com/u/manuel.rd)\
**Post date:** [24 Febrero, 2016 17:17 UTC](https://foros.velneo.com/t/registros-de-una-tabla-que-no-estan-en-otra-not-in/8729/4 "2016-02-24T17:17:32Z")

</div>

Índice complejo con la condición que te dice Miguel.

---

<div class="post-metadata">

**Author:** ![alberto\_nudman](https://avatars.discourse-cdn.com/v4/letter/a/e68b1a/32.png) [@alberto\_nudman](https://foros.velneo.com/u/alberto_nudman)\
**Post date:** [29 Febrero, 2016 03:33 UTC](https://foros.velneo.com/t/registros-de-una-tabla-que-no-estan-en-otra-not-in/8729/5 "2016-02-29T03:33:36Z")

</div>

Amigos,

Muchas gracias por las sugerencias. Me parece que a estas alturas, debiera haber alguna forma más directa de hacer una consulta del tipo NOT IN… pero en fin.

---

<div class="post-metadata">

**Author:** ![juanjo1](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/juanjo1/32/5114_2.png) [@juanjo1](https://foros.velneo.com/u/juanjo1)\
**Post date:** [7 Marzo, 2016 15:37 UTC](https://foros.velneo.com/t/registros-de-una-tabla-que-no-estan-en-otra-not-in/8729/6 "2016-03-07T15:37:06Z")

</div>

Cambia el Chip amigo, Velneo no es SQL, la potencia de Velneo son los indices, aquí en Velneo no puedes consultar nada si antes no defines indices, una de las malas practicas de SQL es que el los defina de acuerdo a las consultas de manera interna sin tu intervencion, y el tema viene porque a veces el Planeador de ejecución de Sql o de otro DBMS, crea indices de manera indiscriminada y esto repercute en el rendimiento, el indice condicionado en Velneo es una forma de lograr lo que quieres y por cierto eso no existe en ninguna otra plataformas, solo practicando te sentirás cómodo y poco a poco cambiando de Chip. Saludos y suerte.

---

<div class="post-metadata">

**Author:** ![pacosatu](https://yyz1.discourse-cdn.com/flex035/user_avatar/foros.velneo.com/pacosatu/32/5131_2.png) [@pacosatu](https://foros.velneo.com/u/pacosatu)\
**Post date:** [7 Marzo, 2016 16:54 UTC](https://foros.velneo.com/t/registros-de-una-tabla-que-no-estan-en-otra-not-in/8729/7 "2016-03-07T16:54:07Z")

</div>

Hola Juan.

No es cuestión solo de cambiar el chip, la culpa la tiene Velneo por intentar comparar la **Base de Datos Real** , que solo unos cuantos sabemos lo que es, con el motor SQL de un SGBDR.

En SQL la Lógica de Negocio simplemente le pide a la Base de datos **“lo que quiere obtener”** , sin preocuparse de cómo lo obtiene.  
En Velneo debemos tener previsto siempre con antelación lo que nos van a pedir, para decirle a la Lógica de Negocio **“cómo obtener los datos”**.

SQL es un lenguaje de Consulta de datos, en Velneo no existe tal herramienta.

Seguramente, la mayoría de suscriptores de Velneo preferimos el encorsetamiento y bien controlado sistema de consultas de Velneo frente a la flexibilidad y muchas veces prácticas “caóticas” de SQL.

Rapidez de consulta y estabilidad de Velneo frente a dinamismo y pérdida de control en SQL.

Saludos  
Paco Satué
