¿Cómo reemplazo el resultado nulo por 0?
Cuando se ejecuta OUTER JOIN (LEFT JOIN, RIGHT JOIN y FULL JOIN), el error de coincidencia en la unión externa genera un gran número de valores NULL. Puede reemplazar estos valores nulos por 0.
Puede usar la función COALESCE para hacerlo. Esta función devuelve el primer valor de parámetro no nulo en la lista de parámetros. Por ejemplo:
1 2 3 4 5 |
SELECT coalesce(NULL,'hello'); coalesce ---------- hello (1 row) |
Usa la combinación izquierda para unirte a las tablas course1 y course2.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
SELECT * FROM course1; stu_id | stu_name | cour_name ----------+------------+-------------------- 20110103 | ALLEN | Math 20110102 | JACK | Programming Design 20110101 | MAX | Science (3 rows) SELECT * FROM course2; cour_id | cour_name | teacher_name ---------+--------------------+-------------- 1002 | Programming Design | Mark 1001 | Science | Anne (2 rows) SELECT course1.stu_name,course2.cour_id,course2.cour_name,course2.teacher_name FROM course1 LEFT JOIN course2 ON course1.cour_name = course2.cour_name ORDER BY 1; stu_name | cour_id | cour_name | teacher_name ------------+---------+--------------------+-------------- ALLEN | | | JACK | 1002 | Programming Design | Mark MAX | 1001 | Science | Anne (3 rows) |
Utilice la función COALESCE para reemplazar valores nulos en el resultado de la consulta con 0 u otros valores distintos de cero:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
SELECT course1.stu_name, coalesce(course2.cour_id,0) AS cour_id, coalesce(course2.cour_name,'NA') AS cour_name, coalesce(course2.teacher_name,'NA') AS teacher_name FROM course1 LEFT JOIN course2 ON course1.cour_name = course2.cour_name ORDER BY 1; stu_name | cour_id | cour_name | teacher_name ------------+---------+--------------------+-------------- ALLEN | 0 | NA | NA JACK | 1002 | Programming Design | Mark MAX | 1001 | Science | Anne (3 rows) |