Solución

Base de datos

Estrategía 1: Usar OUTER JOIN y WHERE

Algoritmo
  1. Inicializar la consulta SQL:
  2. Dado que la llave foranea Bonus.empId hace referencia a Employee.empId y algunos empleados no tienen bono, podemos usar OUTER JOIN para enlazar esas dos tablas.
SELECT
    Employee.name, Bonus.bonus
FROM Employee
LEFT OUTER JOIN Bonus
ON Employee.empid = Bonus.empid;

Nota: LEFT OUTER JOIN podría ser escrito como LEFT JOIN.

El resultado, con los datos del ejemplo se muestra enseguida.

| name   | bonus |
|--------|-------|
| Dan    | 500   |
| Thomas | 2000  |
| Brad   |       |
| John   |       |

Brad y John no tienen bono (el valor de la columna es NULL en la base de datos). Conceptualmente, NULL significa “un valor desconocido no existente” y se maneja de alguna forma especial. Véase el artículo Trabajando con valores NULL en MySQL para mas detalles. Además de lo anterior, tenemos que usar IS NULL o IS NOT NULL para comparar un valor con `NULL.

  1. Por último, podemos agregar la cláusula WHERE con las condiciones adecuadas para filtrar esas filas.
Implementación
SELECT
    Employee.name, Bonus.bonus
FROM
    Employee
        LEFT JOIN
    Bonus ON Employee.empid = Bonus.empid
WHERE
    bonus < 1000 OR bonus IS NULL;

slackmart blog © 2024