Skip to main content

Primeros pasos con las consultas SOQL

Objetivos de aprendizaje

Después de completar esta unidad, podrá:

  • Crear una consulta SOQL válida utilizando las cláusulas requeridas.
  • Filtrar los resultados de la consulta con varias condiciones.
  • Clasificar los resultados de la consulta.

Si esta es su primera parada en la ruta Construir habilidades de programación de Apex, se pasó de parada. Dé un paso atrás y primero obtenga las insignias de Fundamentos de Apex para administradores y Programación orientada a objetos para administradores antes de continuar con este módulo.

¿Ya obtuvo las insignias? ¡Buen trabajo! Ahora que tiene un conocimiento básico de cómo crear clases, variables y objetos sObject, es momento de aprender el lenguaje de consulta de objetos de Salesforce, también conocido como SOQL (Salesforce Object Query Language).

¿Qué es SOQL?

SOQL es un lenguaje que obtiene datos de registros de una base de datos de Salesforce. En Programación orientada a objetos para administradores, aprendió que puede utilizar declaraciones del lenguaje de manipulación de datos (DML, Data Manipulation Language) para insertar, actualizar y eliminar registros. ¿Pero qué hacer si desea obtener datos que ya existen en la base de datos? SOQL facilita la recuperación de datos.

Crear consultas SOQL es similar a crear un informe. Al crear un informe, se responden preguntas de este tipo:

  1. ¿Qué campos deseo mostrar?
  2. ¿Dónde se encuentran esos campos?

Puede hacerse las mismas preguntas para crear una consulta SOQL. En una consulta, las respuestas a estas preguntas son los campos y el objeto.

SELECT Name, Email FROM Contact. SELECT y FROM son palabras clave de SOQL. Name y Email son los campos de nombre y email, mientras que Contact es el objeto Contacto estándar de Salesforce.

Esta consulta contiene las palabras clave de SOQL (SELECT y FROM), los campos del registro (Email y Name) y un objeto (el objeto estándar Contacto).

¿Qué hace esta consulta? Recupera (obtiene) información específica sobre los registros de contactos en la base de datos. Veamos de qué modo encajan estas piezas y practiquemos la escritura de algunas consultas. Primero, vamos a ver las partes que requiere una consulta SOQL.

Cláusulas de SOQL requeridas

SELECT

La base de cualquier consulta SOQL son dos cláusulas: SELECT y FROM. Piense que una cláusula es como una pieza de un rompecabezas. Es tan solo una parte de una consulta completa.

SELECT Name, Email FROM Contact. SELECT Name, Email es la cláusula SELECT.

Cada consulta SOQL tiene una cláusula SELECT que empieza con la palabra clave SELECT. La cláusula SELECT especifica uno o varios campos (separados por comas) en un registro de Salesforce. Esta consulta de ejemplo devuelve dos campos: Name, Email.

Una nota sobre los nombres de los campos: cuando hable con otro administrador, como usted, probablemente se refiera a un campo por su etiqueta. En cambio, en programación, los desarrolladores usan nombre de API. Por lo tanto, en sus consultas SOQL, siempre use nombres de API para los campos, en lugar de etiquetas. No se preocupe si no sabe cuál es el nombre de API de un campo; hay formas de averiguarlo. Más adelante en este módulo veremos más información al respecto.

FROM

La segunda cláusula requerida para crear una consulta SOQL es la cláusula FROM.

SELECT Name, Email FROM Contact. FROM Contact es la cláusula FROM.

Esta cláusula, que comienza con la palabra clave FROM, especifica un objeto en la base de datos de Salesforce. En este caso, necesitamos los datos del objeto Contacto. Veamos el aspecto de los datos al ejecutar la consulta.

Siga el proceso con Trail Together

¿Desea seguir el proceso con un experto a medida que realiza este paso? Eche un vistazo a este video, parte de la serie Trail Together en Trailhead Live. Encontrará un vínculo a la sesión completa en la sección Recursos.

¿Todo listo para pasar a la práctica con SOQL?

En esta unidad, vimos los pasos para crear una consulta SOQL en el Editor de consultas de Developer Console. No disponemos de un reto práctico en esta unidad, pero si desea seguir y probar los pasos, puede crear un nuevo Trailhead Playground. Consulte el módulo Gestión de Trailhead Playground para aprender cómo hacerlo. Crear un nuevo Trailhead Playground lleva a Salesforce normalmente entre 3 y 4 minutos. También puede utilizar Trailhead Playground cuando sea el momento de completar los retos prácticos más adelante en el módulo.

Nota

Sí, ¡realmente queremos decir un Trailhead Playground completamente nuevo! Si está utilizando una organización o playground existente, pueden surgir problemas para completar los retos.

Crear una consulta mediante el Editor de consultas

  1. En su Trailhead Playground, haga clic en Configuración y seleccione Developer Console.
  2. Haga clic en Archivo | Abrir | Objetos | Contacto.
    En la ventana Abrir, figura el tipo de entidad (se destacan los objetos) y sus entidades (se destaca el contacto).
  3. Haga clic en Abrir.
    El objeto Contacto se abre y muestra los nombres y tipos de todos los campos que tiene asociados.
  4. En el panel inferior, seleccione la ficha Editor de consultas. (Si no ve ninguna ficha, haga clic en la flecha hacia arriba que se encuentra en la parte inferior de la ventana).Ficha Editor de consultas con tres paneles de ventanas.
    El Editor de consultas tiene tres secciones. La sección superior izquierda (1) muestra la consulta. Allí puede modificar la consulta. La sección inferior izquierda (2) muestra los errores. La sección derecha (3) guarda un historial de las consultas SOQL ejecutadas.
  5. Con las teclas CTRL + clic (Windows) o CMD + clic (Mac), seleccione los campos Email, Name y Languages__c.
  6. Haga clic en Consulta.
    La consulta SOQL, basada en el objeto y los campos que seleccionó, se muestra en el Editor de consultas. Tenga en cuenta que, al seleccionar un campo en Query Builder, automáticamente inserta el campo de nombre de API en la consulta SOQL. Con esta herramienta, no es necesario memorizar los nombres de API ni buscarlos.
  7. Haga clic en Execute (Ejecutar).
    La consulta devuelve los campos Id, Email, Name, y Languages__c.

Una vez ejecutada la consulta, los resultados muestran exactamente qué se solicitó. Además, al usar Editor de consultas, se devuelve el id. de forma adicional. ¡Magnífico!

Cláusulas de SOQL opcionales

Las cláusulas SELECT y FROM son obligatorias, pero SOQL también tiene cláusulas opcionales que permiten restringir la consulta.

Las consultas de ejemplo que crea en Trailhead Playground devuelven una cantidad bastante reducida de registros. La última consulta devolvió 20 registros. Ahora bien, ¿qué pasaría si hubiera miles de registros? La cantidad de potencia de computación necesaria para procesar los datos sería significativa. ¿No sería genial que SOQL tuviera una forma de devolver un subconjunto de todos los registros? Efectivamente.

WHERE

La cláusula WHERE establece las condiciones que debe cumplir un registro para poder seleccionarlo y devolverlo. Utilice esta cláusula de la misma manera que usaría los filtros para restringir los datos que se muestran en un informe o una vista de lista. Por ejemplo, si estamos buscando un contacto cuyo nombre es Stella, podemos agregar WHERE FirstName = 'Stella' al final de la consulta, de este modo:

SELECT Name, Email FROM Contact WHERE FirstName = 'Stella'

También puede definir la cláusula WHERE para filtrar mediante más de una condición. Hay múltiples formas de hacerlo con tres operadores: AND, OR, IN. Consideremos algunos ejemplos.

Y
Puede utilizar AND para devolver registros que cumplen dos condiciones. Esta consulta devuelve todos los registros con el nombre Stella y el apellido Pavlova.


SELECT Name, Email
FROM Contact
WHERE FirstName = 'Stella' AND LastName = 'Pavlova'

O BIEN
Puede utilizar OR para devolver registros que cumplen una de dos condiciones. Esta consulta devuelve los registros con el apellido James o el apellido Barr.


SELECT Name, Email
FROM Contact
WHERE LastName = 'James' OR LastName = 'Barr'

IN
Puede utilizar IN para devolver registros que cumplen al menos una de tres o más condiciones. La cláusula IN suele utilizarse para devolver los valores de una lista de selección, o bien los valores de LIST o SET. La cláusula IN simplifica una consulta que, de otro modo, tendría demasiadas condiciones OR. Esta consulta devuelve todos los registros con el apellido James, Barr, Nedaerk o Forbes.

SELECT Name, Email FROM Contact
WHERE LastName IN ('James', 'Barr', 'Nedaerk', 'Forbes')

LIMIT

La palabra clave LIMIT establece el número máximo de registros para devolver. LIMIT es útil cuando está realizando pruebas y no quiere esperar que una consulta procese un gran conjunto de datos. A medida que aprenda más sobre SOQL, descubrirá más formas relevantes de evitar devolver demasiados registros, pero hasta entonces, LIMIT es una solución sencilla. Probemos agregar un límite a la consulta.

  1. Vuelva al Editor de consultas en Developer Console.
  2. Al final de la consulta, escriba LIMIT 5 de modo que se lea así:
    SELECT Email, Name FROM Contact LIMIT 5
  3. Haga clic en Execute (Ejecutar).

El panel Resultado de la consulta muestra cinco resultados.

ORDER BY

Ahora que comprende el funcionamiento de la cantidad de resultados, ¿cómo puede organizarlos? Use la cláusula ORDER BY para ordenar los resultados por el valor de un campo específico. Opcionalmente, utilice un calificador en una cláusula ORDER BY para especificar el orden ascendente (predeterminado) o descendente, como haría en una hoja de cálculo. Por último, si tiene muchos valores de campo vacíos, use el calificador NULLS para agrupar a todos los valores NULL ya sea en primer lugar (predeterminado) o en último lugar.


Sintaxis
Descripción
Ejemplo
ASC
Devuelve los resultados en orden ascendente.
SELECT Name, Email FROM Contact
ORDER BY Name ASC
LIMIT 5

DESC
Devuelve los resultados en orden descendente.

SELECT Name, Email FROM Contact
ORDER BY Email DESC
LIMIT 5

NULLS
FIRST | LAST
Devuelve los registros null al comienzo (NULLS FIRST) o al final (NULLS LAST).
SELECT Name, Email FROM Contact
ORDER BY Email
NULLS LAST

En el ejemplo ASC, SELECT Name, Email FROM Contact ORDER BY Name ASC LIMIT 5 devuelve el campo de nombre Name y el campo Email de cinco contactos, en orden ascendente por nombre.

Lista de resultados con el campo de nombre (en orden ascendente) y el campo de email en el objeto Contacto.

En el ejemplo NULLS, SELECT Name, Email FROM Contact ORDER BY Email NULLS LAST devuelve el email y nombre en orden ascendente (porque es la opción predeterminada) por email. Los registros sin una dirección de email se agrupan al final.

Lista de resultados con el campo de nombre y el campo de email.

Gracias a esta presentación de la potencia de SOQL, ahora puede recuperar grandes conjuntos de datos, establecer límites para obtener resultados muy específicos y organizar los datos devueltos de modo que se adapten a sus necesidades. Muy útil, ¿no?

Recursos

Comparta sus comentarios de Trailhead en la Ayuda de Salesforce.

Nos encantaría saber más sobre su experiencia con Trailhead. Ahora puede acceder al nuevo formulario de comentarios en cualquier momento en el sitio de Ayuda de Salesforce.

Más información Continuar a Compartir comentarios