Ejemplos del operador AND

En los siguientes ejemplos se usa el operador AND en consultas y se muestra cómo se pueden delegar los elementos al proveedor de la fuente de datos.

Ejemplo 1:

SELECT Obj FROM table WHERE pop>10000 AND city='Austin' AND hhinc<75000 

Si el proveedor de fuente de datos admite AND, >, =, y <, la consulta completa se delega al proveedor de la fuente de datos.

Si el proveedor de fuente de datos admite AND y algunos de los otros operadores, dichos operadores se delegan y Spectrum Spatial procesa el resto.

Si el proveedor de fuente de datos no admite > o <, entonces se delega lo siguiente al proveedor de la fuente de datos:

SELECT pop,hhinc FROM table WHERE city='Austin

Spectrum Spatial usa los resultados de la consulta delegada para evaluar la cláusula WHERE original.

SELECT obj FROM <results of the delegation> WHERE pop>10000 AND city='Austin AND hholdinc<75000

Ejemplo 2:

Si el proveedor de fuente de datos no admite AND, según las reglas solo se puede delegar una operación. Para determinar qué operación delegar, Spectrum Spatial valora los operadores y envía al proveedor de fuente de datos el que tiene el resultado más alto. La valoración se realiza realmente en una reescritura teórica de la consulta que podría ejecutarse si el proveedor de fuente de datos admitiera todas las operaciones.

Además de no admitir AND, la fuente de datos en este ejemplo no admite Contains. No obstante, si admite Envelope_Intersects.

SELECT city FROM table WHERE Obj Contains <geom> AND pop > 5000 

se convierte a:

SELECT city FROM table WHERE Obj Envelope_Intersects <geom> AND pop > 5000
Spectrum Spatial valora Envelope_Intersects más alto que el operador lógico >. Este también es el caso cuando se delega una operación espacial sobre un operador no espacial. Por lo tanto, se delega lo siguiente a la fuente de datos:
SELECT city FROM table WHERE Obj Envelope_Intersects <geom>

Spectrum Spatial evalúa la consulta original usando el resultado de la consulta anterior:

SELECT city FROM <results of the delegation> WHERE Obj contains <geom> AND pop > 5000