SELECT qué campos, FROM qué objeto. Entre corchetes, dentro de tu código, y te devuelve una lista de registros lista para usar.
En Admin esUn Report Type y las columnas que eliges para el informe
✓ En esta sub-lección
01Escribir una consulta SOQL con SELECT y FROM y guardar el resultado en una List.
02Explicar por qué solo puedes leer los campos que pediste en el SELECT.
03Saber cuándo asignar el resultado a un solo registro y qué pasa si no hay filas.
La nutria: ¿Te acuerdas? · Repaso del Módulo 2
En el Módulo 2 comprobabas si la empresa de un lead estaba entre los clientes usando un Set. ¿Qué método respondía sí o no?
Hasta ahora tus registros los fabricabas tú con new. En una org real ya existen: miles de cuentas, contactos y oportunidades guardados en la base de datos. es la forma de pedírselos a Salesforce desde Apex.
La nutria: El paralelo de Admin
Cuando yo creaba un informe, primero elegía el Report Type (Cuentas, Oportunidades…) y luego las columnas que quería ver. SOQL es exactamente eso, escrito en una línea: FROM es el Report Type y SELECT son las columnas. Si una columna no está en el informe, no la ves; si un campo no está en el SELECT, tu código tampoco lo ve.
Los corchetes le dicen a Apex «esto es una consulta». El resultado ya es una List<Account>: la recorres con el for del Módulo 2.
Paso 1 de 5
Aunque se escriba en segundo lugar, la base de datos empieza por aquí: de qué objeto hablamos. Es elegir el objeto principal de un informe.
Cada pieza de la consulta tiene su equivalente en el constructor de informes.
SELECT: los campos, separados por comas. Usa el nombre de API (Industry, Rating__c), no la etiqueta.
FROM: un solo objeto, también por su nombre de API (Account, Invoice__c).
El Id siempre viene, lo pidas o no. Pídelo igualmente: deja claro que lo usarás.
En el constructor de informes
En SOQL
Report Type: Cuentas
FROM Account
Columnas: Nombre, Sector
SELECT Name, Industry
Filtros: Sector = Tecnología
WHERE Industry = 'Technology' (lección 2)
Ordenar por Nombre
ORDER BY Name (lección 2)
Lo ves en pantalla
Lo recibes en una List para trabajar con ello
La nutria: Ya has escrito SOQL sin saberlo
Yo me di cuenta tarde: cuando exportaba datos con Data Loader, eligiendo objeto, campos y condiciones, al final del asistente aparecía una línea que empezaba por SELECT. Data Loader construye una consulta SOQL con lo que marcas. Lo mismo hace una list view con sus filtros, por dentro. La diferencia es que ahora la escribes tú y usas el resultado en código.
Solo ves lo que pediste
Si consultas SELECT Id, Name y luego lees a.Phone, Apex no va a buscarlo por ti: lanza una SObjectException que dice que el campo se consultó sin incluirlo en el SELECT. No hay «SELECT *» en SOQL: pides campo a campo. Es una ventaja, no una molestia: cada campo que traes ocupa memoria de la .
Un solo registro
Apex
// Si estás seguro de que hay exactamente uno:Accountacme = [SELECTId, NameFROMAccountWHEREName = 'Acme'LIMIT1];
// Si puede no haber ninguno, pide una lista y compruébala:List<Account> found = [SELECTId, NameFROMAccountWHEREName = 'Acme'LIMIT1];
if (!found.isEmpty()) {
Accountacme2 = found[0];
}
WHERE y LIMIT los verás a fondo en la siguiente lección. Aquí solo importa dónde guardas el resultado.
El encargo de este módulo
La nutria: Lo que pide el equipo de cuentas
Vengo de hablar con el equipo de cuentas y esto es lo que quieren: «Para la revisión trimestral queremos: ver la cartera; las diez oportunidades grandes del trimestre; cada cuenta de Retail con su propietario y sus contactos; cuáles tienen negocio abierto y cuáles no han comprado nunca; un buscador de casos que no sea un agujero de seguridad; el pipeline sumado por etapa; un buscador para cuando llaman y no sabemos qué es; y todo eso junto para una región». Yo lo habría montado con varios informes, un par de Report Types personalizados y alguna exportación a Excel. Aquí son consultas, y la primera es la de hoy: ver qué hay.
La nutria: ¿Y por qué no un informe o un Flow?
Te lo digo con franqueza: para mirar datos, un informe gana. Y en Flow, cada Get Records es una consulta SOQL montada con clics; por eso cuenta para el mismo límite de 100 consultas. Entonces, ¿para qué SOQL? Porque el código de los próximos módulos (triggers, procesos nocturnos, integraciones) no puede abrir un informe: siempre empieza por una consulta. Y porque en varios encargos de este módulo Get Records se queda corto; en esas lecciones te enseño dónde y por qué.