es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.

Tags:  ,

Answer

  1. Avatar for 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:

       AND s.id IS NOT NULL
    

    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í:

        SELECT s.*, GROUP_CONCAT(a.title SEPARATOR ',') AS activities
        FROM shop s
        LEFT JOIN shop_activity sa
            ON s.id = sa.shop_id
        LEFT JOIN activity a
             ON sa.activity_id = a.id
        WHERE s.id = ? AND s.id IS NOT NULL
    

    Esto debería darte el resultado deseado, donde no se devolverá ninguna fila si no hay resultados.

Comments are closed.