viernes, 6 de marzo de 2015

Expresión SQL para simplificar selección de datos

Utilización de IN en predicado Where

Utilizar IN puede facilitar la creación de selecciones complejas en sentencias SQL. Conocemos la forma básica de utilizar este operando que permite verificar que el valor un campo está entre alguno de n valores.

Por ejemplo, la instrucción siguiente que selecciona los datos asociados a algunos de los países que se indican se podría escribir como:

Select
 *
from
 Usuarios
Where Pais=ES' or Pais='PT' or Pais='FR'

Pero utilizando IN se podría también escribir como:

Select
 *
from
 Usuarios
Where Pais in ('ES', 'PT', 'FR')

Comparándolas;


  • Semanticamente son iguales, el resultado es el mismo
  • Sintacticamente parece mucho mejor la segunda sentencia que la primera
    • Más sencilla
    • Más legible
    • Menos escritura




Además se puede ampliar las posibilidades de IN de la siguiente forma para simplificar la selección de datos

Si tenemos la siguiente sentencia SQL con alguna complicación en la definición del predicado Where mezclando bastantes condiciones and y or para los mismos campos

SELECT 
 * 
FROM 
 Usuarios
WHERE 
 (Pais='ES' and Dpto=1) or
 (Pais='FR' and Dpto=2) or 
 (Pais='PT' and Dpto=3)


Se puede simplificar utilizando IN de la siguiente manera ya que se puede incorporar más de un campo para la claúsula

SELECT 
 * 
FROM 
 Usuarios 
WHERE 
 (Pais, Dpto) in 
 (values('ES', 1), ('FR', 2), ('PT', 3))  

3 comentarios:

  1. Exelente aporte, me convenciste, ahí en adelante utilizaremos más la instrucción IN, gracias.

    ResponderEliminar
  2. Estoy agradecido con tus conocimientos y aporte, espero retomes tu blog y continues compartiendo tus conocimientos, gracias.

    ResponderEliminar
    Respuestas
    1. Me alegro que te haya servido. Si, espero sacar algún rato y por lo menos ir incluyendo alguna cosilla

      Eliminar