MySQL - si no existe el valor del campo que busco, que ponga "vacio"

 
Vista:

si no existe el valor del campo que busco, que ponga "vacio"

Publicado por Juan Carlos (1 intervención) el 07/02/2023 12:27:17
Hola. Apenas tengo idea de mysql.
Me pasaron esta query
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
SELECT
 DISTINCT u.username,
 u.firstname AS NOMBRE,
 u.lastname AS APELLIDOS,
 ic.shortname AS CURSO,
 u.city AS CIUDAD,
 from_unixtime(u.lastaccess) as "ULTIMA CONEXION",
 u.email,
 from_unixtime(u.firstaccess) as "ALUMNO DESDE",
 miscampos.data AS "TELEFONO",
 miscampos2.data AS "DNI"
FROM
 prefix_course ic
 JOIN prefix_context con ON con.instanceid = ic.id
 JOIN prefix_role_assignments ra ON con.id = ra.contextid AND con.contextlevel = 50
 JOIN prefix_role r ON ra.roleid = r.id
 JOIN prefix_user u ON u.id = ra.userid
 JOIN prefix_user_enrolments ue ON ue.userid = ra.userid
/*JOIN con problemas*/
 JOIN prefix_user_info_data miscampos ON miscampos.userid = u.id AND miscampos.fieldid= 3
 JOIN prefix_user_info_data miscampos2 ON miscampos2.userid = u.id AND miscampos2.fieldid= 1
/*fin JOIN con problemas*/
 LEFT JOIN prefix_groups_members gm ON u.id = gm.userid
 LEFT JOIN prefix_groups g ON g.id = gm.groupid
WHERE
 ic.id=54
 AND ue.enrolid = 185
 AND r.id = 5
ORDER BY APELLIDOS ASC



pero tiene un problema y es que si en los JOIN que están entre los comentarios no existe el registro en esa tabla, no me muestra el resto de datos que extraigo de las otras tablas.
Imagino que se podría hacer una excepción con un IF o algo así pero la verdad es que estoy perdido....
Si me pudierais ayudar os lo agradecería.
Un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Claudio Nipotti

si no existe el valor del campo que busco, que ponga "vacio"

Publicado por Claudio Nipotti (4 intervenciones) el 06/03/2023 11:38:59
No tengo tus tablas con datos para probar primero, pero supongo que poniendo "LEFT JOIN" en lugar de "JOIN" es muy probable que deje los campos vacíos. Al menos, si entendí lo que quieres hacer, yo lo haría así.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar