Consulta de mysql pregunta acerca de tener y contar

0

Pregunta

En esta consulta*, I lista y ordenar las filas de "mytableabc" por la latitud, la longitud, diversos criterios,... de cerca a lejos o de puntuación y su trabajo/listado de datos y creo que es bueno/fast suficiente!?

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 distance, 
    (match(colone,coltwo) against('searchkeywordabc' in boolean mode)) as score, 
id,colone,coltwo,latitude,longtitude,colthree 
        from mytableabc 
        where (colone='sampleforsomething') 
            and (match(colone,coltwo) against('searchkeywordabc' in boolean mode))
                having distance <= 5 order by distance asc limit 0,50

--problema

en las diferentes líneas y archivos que necesito sólo el número total count(id) de la devolución de los elementos con los mismos criterios... yo intente agregar count(id), pero no da correcto recuento total y también de la lista de líneas, sólo quiero el total de números(como normalmente recuento de consulta) no datos de la línea de

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 distance, 
        (match(colone,coltwo) against('searchkeywordabc' in boolean mode)) as score, 
    id,colone,coltwo,latitude,longtitude,colthree 
            from mytableabc 
            where (colone='sampleforsomething') 
                and (match(colone,coltwo) against('searchkeywordabc' in boolean mode))
                    having distance <= 5 order by distance asc limit 0,50

- también esta consulta sin distancia/latitud/longtitude criterios de las buenas obras, para regresar solo número total... pero necesito agregar a distancia consulta a esta consulta

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

yo no soy experto en sql y sí, como veis que yo necesito. gracias.

geolocation mariadb mysql php
2021-11-17 21:58:00
1

Mejor respuesta

0

Plan A:

Mover el distance cheque a la WHERE la cláusula. Esto elimina la necesidad de HAVING mientras que el filtrado de más, por lo que el COUNT no se infla.

select  count(*)
    from  mytableabc
    where  (colone='sampleforsomething')
      and  (match(colone,coltwo) against('searchkeywordabc' in boolean mode))
      AND  (6371 * acos(cos(radians('40.123456')) * 
        cos(radians(latitude)) * cos(radians(longtitude) -
        radians('29.123456')) + sin(radians(latitude)) *
        sin(radians('40.123456')))) < 5;

Espero que el FULLTEXT índice a utilizarse por primera vez, con las otras dos pruebas (= y a distancia) que se comprueba todas las filas devueltas desde los PIES de búsqueda.

Plan B:

Continuar el uso de HAVINGpero tiene una subconsulta. (Este es probablemente más lento).

2021-11-18 04:19:40

i analizar/punto de referencia y plan seleccionado. gracias por la rápida respuesta
evet

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................