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.

Pregunta de consulta de MySQL sobre tener y contar.

En esta consulta*, listo y ordeno filas de “mytableabc” por latitud, longitud, varios criterios,… de cerca a lejos o puntaje y sus datos de trabajo/listado y creo que es lo suficientemente bueno/rápido!

select
round((6371 * acos(cos(radians(‘40.123456’)) * cos(radians(latitude)) * cos(radians(longtitude) – radians(‘29.123456’)) + sin(radians(latitude)) * sin(radians(‘40.123456’)))), (2)) as distancia,
(match(colone,coltwo) against(‘searchkeywordabc’ in boolean mode)) as puntaje,
id,colone,coltwo,latitude,longtitude,colthree
from mytableabc
where (colone=’sampleforsomething’)
and (match(colone,coltwo) against(‘searchkeywordabc’ in boolean mode))
having distancia <= 5 order by distancia asc limit 0,50

–problema

En diferentes líneas y archivos, necesito solo el número total de elementos que se devuelven con los mismos criterios… intento agregar count(id), pero no da el recuento total correcto y también enumera las líneas, solo quiero el número total (como lo hace la consulta count) no datos de línea.

select
count(id),
round((6371 * acos(cos(radians(‘40.123456’)) * cos(radians(latitude)) * cos(radians(longtitude) – radians(‘29.123456’)) + sin(radians(latitude)) * sin(radians(‘40.123456’)))), (2)) as distancia,
(match(colone,coltwo) against(‘searchkeywordabc’ in boolean mode)) as puntaje,
id,colone,coltwo,latitude,longtitude,colthree
from mytableabc
where (colone=’sampleforsomething’)
and (match(colone,coltwo) against(‘searchkeywordabc’ in boolean mode))
having distancia <= 5 order by distancia asc limit 0,50

–también esta consulta sin criterios de distancia/latitud/longitud funciona bien, devolviendo solo el número total… pero necesito agregar la consulta de distancia a esta consulta.

select count(id) from mytableabc where (colone=’sampleforsomething’) and (match(colone,coltwo) against(‘searchkeywordabc’ in boolean mode))

No soy un experto en SQL y como puedes ver, necesito uno.
Gracias.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Solución

    Intenta usar la función COUNT() con una cláusula GROUP BY:

    sql
    SELECT COUNT(id)
    FROM mytableabc
    WHERE (colone='muestraalgoalgo')
    AND (match(colone,coltwo) against('palabradebúsquedaabc' in boolean mode))
    GROUP BY round((6371 * acos(cos(radians('40.123456')) * cos(radians(latitud)) * cos(radians(longitud) - radians('29.123456')) + sin(radians(latitud)) * sin(radians('40.123456')))), (2))
    HAVING distancia <= 5
    ORDER BY distancia ASC
    LIMIT 0,50;

Comments are closed.