Número de filas en un quewy

Tengo la siguiente consulta y su resultado,

Luego realizo el siguiente query:

select * from SGK_TRAN_FOTO where tf_path_foto_dela like('%D:\Temp\ImagesForPassages\2-6-1\2022\07\15\05%')

por cada uno de las filas del primer resultado para conocer cuantas filas tiene

La pregunta es como puede hacer un query que me dé como resultado el número de filas que tiene cada fila del resultado inicial.

1 respuesta

Respuesta
1

Puede probar una consulta como esta:

SELECT 
di_codigo,
di_nombre,
(etc.),
Cuenta = (
    SELECT COUNT(tf_codigo)
    FROM SGK_TRAN_FOTO 
    WHERE
    SGK_TRAN_FOTO.tf_path_foto_dela = SGK_Directorio.di_nombre
)
FROM SGK_Directorio
WHERE di_status <> 4
ORDER BY 1 DESC

Saludos 

me arroja el siguiente resultado

No me fijé si el contenido del campo tf_path_foto_dela coincide exactamente con el del campo di_nombre. Usted en su consulta inicial usó el comparador like, quizá porque no coinciden. Sustituya pues:

SELECT 
di_codigo,
di_nombre,
(etc.),
Cuenta = (
    SELECT COUNT(tf_codigo)
    FROM SGK_TRAN_FOTO 
    WHERE
    SGK_TRAN_FOTO.tf_path_foto_dela LIKE SGK_Directorio.di_nombre & '%'
)
FROM SGK_Directorio
WHERE di_status NOT IN (1,3,4)
ORDER BY 1 DESC

saludos

Disculpe. No era un &, sino un +

SELECT 
di_codigo,
di_nombre,
(etc.),
Cuenta = (
    SELECT COUNT(tf_codigo)
    FROM SGK_TRAN_FOTO 
    WHERE
    SGK_TRAN_FOTO.tf_path_foto_dela LIKE SGK_Directorio.di_nombre + '%'
)
FROM SGK_Directorio
WHERE di_status NOT IN (1,3,4)
ORDER BY 1 DESC

Si, pero sigue arrojando la cuenta en 0

Hasta ahora no había mirado el contenido de los campos tf_path_foto_dela y di_nombre. Pensaba que di_nombre contenía el nombre de la carpeta en la que estaba el archivo que indicaba tf_path_foto_dela.

Ahora veo que no es así. Mientras uno empieza por "D:\Temp...", el otro empieza por "\DataVol2\Temp...". Por tanto, es normal que la consulta no devuelva ningún resultado. No sé en qué se basa para que las rutas empiecen de forma diferente. Puedo modificar la consulta para que funcione, pero no sé si la respuesta será general. Es decir, si va a funcionar en cualquier condición. Pero si siempre va a ser así (que uno sea D:\Temp y el otro \DataVol2\Temp), podría cambiar:

SGK_TRAN_FOTO.tf_path_foto_dela LIKE SGK_Directorio.di_nombre + '%'

por

SGK_TRAN_FOTO.tf_path_foto_dela LIKE REPLACE(SGK_Directorio.di_nombre, 'D:\', '\DataVol2\') + '%'

¡Gracias! 

Hola, olvide preguntar como puedo hacer para que el resultado de la columna "Cuenta", en la columna "di_nume_regi_proc"


Hola, olvide preguntar como puedo hacer para que el resultado de la columna "Cuenta",  se inserte en la columna "di_nume_regi_proc" 

Aunque no comprendo para qué va a hacer eso, porque no sé cómo pretende mantenerlo sincronizado, necesita una consulta de actualización. Algo así como:

UPDATE SGK_Directorio SET
di_nume_regi_proc = (
    SELECT COUNT(tf_codigo)
    FROM SGK_TRAN_FOTO 
    WHERE
    SGK_TRAN_FOTO.tf_path_foto_dela LIKE REPLACE(SGK_Directorio.di_nombre, 'D:\', '\DataVol2\') + '%'
)
WHERE ...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas