SQL: debe devolver 0 si el valor de GROUP_CONCAT es nulo.
¡Solo quiero que no se devuelva ninguna fila si no hay resultados!
Soy tan nulo en SQL que me deprime, por favor ayuda…
Tengo 2 tablas con 1 tabla de asociación:
Tabla de tienda:
id | nombre | dirección |
---|---|---|
1 | nombre1 | calle 1… |
2 | nombre2 | calle 2… |
3 | nombre3 | calle 3… |
Tabla de actividad:
id | título |
---|---|
1 | Distribución |
2 | Importación |
3 | Preparación |
4 | Producción |
Tabla de asociación de tienda_actividad:
id_tienda | id_actividad |
---|---|
1 | 1 |
2 | 2 |
3 | 3 |
3 | 4 |
Encontré esta consulta para concatenar actividades:
SELECT t.*, GROUP_CONCAT(a.título SEPARATOR ',') AS actividades
FROM tienda t
LEFT JOIN tienda_actividad ta
ON t.id = ta.id_tienda
LEFT JOIN actividad a
ON ta.id_actividad = a.id
WHERE t.id = ?
y hace el trabajo.
id | nombre | dirección | actividades |
---|---|---|---|
3 | nombre3 | calle 3… | Producción, Importación |
Pero si el id de t no existe en la tabla de tiendas, actualmente tengo este resultado:
id | nombre | dirección | actividades |
---|---|---|---|
NULL | NULL | NULL | NULL |
Pero no quiero ninguna fila si todo es nulo para devolver un mensaje, actualmente estoy haciendo una condición en la columna id y sé que no es muy limpio.
davy.ai
Para no devolver ninguna fila si no hay resultados, puedes agregar una condición para comprobar si el ID de la tabla “shop” no es nulo. Esto se puede hacer agregando la siguiente línea después de la cláusula WHERE:
Esto asegurará que solo se devuelvan las filas donde el ID de la tabla “shop” no sea nulo. La consulta actualizada se vería así:
Esto debería darte el resultado deseado, donde no se devolverá ninguna fila si no hay resultados.