Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Query calcolo latitudine e longitudine

    ciao a tutti posto questa query db mysql:

    La query sotto funziona e ti permette di ordinare i record in base alla distanza (l'ho postata magari serve a qualcuno) la divido per maggiore comprensione

    Codice PHP:
    SELECT namecity_it,longitudine,latitudine
    TRUNCATE 6363 sqrtPOWRADIANS(41.9 ) - RADIANS(latitudine) , ) + POWRADIANS(12.4833) - RADIANS(longitudine) , ) ) , ) AS distance_pt 
    FROM sab_city_country 
    WHERE 
    longitudine is not null 
    and latitudine is not null AND city_id <> -126693 
    ORDER BY distance_pt ASC LIMIT 5 
    questa query (quella sotto ) che è il mio problema non funziona vorrei ordinare i record in base alla distanza ma che distano meno di 40 km dal punto prefissato (latitudine,longitudine)

    Codice PHP:
    SELECT namecity_it,longitudine,latitudineTRUNCATE 6363 sqrtPOWRADIANS(41.9 ) - RADIANS(latitudine) , ) + POWRADIANS(12.4833) - RADIANS(longitudine) , ) ) , ) AS distance_pt 
    FROM 
    sab_city_country 
    WHERE longitudine is not null 
    and latitudine is not null AND city_id <> -126693 AND distance_pt 40 
    ORDER BY distance_pt ASC LIMIT 5 
    errore: Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
    [MySQL][ODBC 3.51 Driver][mysqld-4.1.9-max]Unknown column 'distance_pt' in 'where clause' .. il problema sta qua: AND distance_pt < 40

    cmq ho provato a fare anche la divido per maggiore comprensione:
    Codice PHP:
    SELECT namecity_it,longitudine,latitudine
    TRUNCATE 6363 sqrtPOWRADIANS(41.9 ) - RADIANS(latitudine) , ) + POWRADIANS(12.4833) - RADIANS(longitudine) , ) ) , ) AS distance_pt 
    FROM sab_city_country 
    WHERE longitudine is not null 
    and latitudine is not null AND city_id <> -126693 
    AND 
    TRUNCATE 6363 sqrtPOWRADIANS(41.9) - RADIANS(latitudine) , 2) + POW(12.4833) - RADIANS(longitudine) , ) ) , ) < 40 
    ORDER BY distance_pt ASC LIMIT 5 
    smpre errore praticamente il tutto funziona ma se aggiungo:

    AND
    TRUNCATE ( 6363 * sqrt( POW( RADIANS(41.9) - RADIANS(latitudine) , 2) + POW(12.4833) - RADIANS(longitudine) , 2 ) ) , 3 ) < 40

    esce errore:
    error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') - RADIANS(longitudine) , 2 ) ) , 3 ) < 40 ORDER BY distance_pt ASC LIMIT 5' at line 1

    qualche idea consiglio

  2. #2
    1. non puoi usare l'alias di una colonna derivata per fare l'order by
    2. puoi però usare il suo ordinale: ad esempio in SELECT PIPPO,PLUTO FROM TABELLA puoi aggiungere ORDER BY 2 per ordinare per PLUTO

  3. #3
    uehh.. ciao

    ma così funziona però.. anche se ordino per distance_pt
    Codice PHP:
    SELECT namecity_it,longitudine,latitudine
    TRUNCATE 6363 sqrtPOWRADIANS(41.9 ) - RADIANS(latitudine) , ) + POWRADIANS(12.4833) - RADIANS(longitudine) , ) ) , ) AS distance_pt 
    FROM sab_city_country 
    WHERE 
    longitudine is not null 
    and latitudine is not null AND city_id <> -126693 
    ORDER BY distance_pt ASC LIMIT 5 
    cmq posto il link dove ho preso spunto
    http://www.squadrainformatica.com/it..._e_longitudine

  4. #4
    avevo letto in fretta... il problema era nella where, non nella order by. sorry

  5. #5
    si il problema sta nella where ..
    però non va bene fare così? (perchè cmq non funzia ):

    Codice PHP:
    WHERE longitudine is not null and latitudine is not null AND city_id <> -126693 
    AND TRUNCATE 6363 sqrtPOWRADIANS(41.9) - RADIANS(latitudine) , 2) + POW(12.4833) - RADIANS(longitudine) , ) ) , ) < 40 
    ORDER BY distance_pt ASC LIMIT 5 

  6. #6
    risolto ... praticamente mancava un RADIANS
    ecco la query funzionante..

    Codice PHP:
    SELECT namecity_it,longitudine,latitudineTRUNCATE 6363 sqrtPOWRADIANS(41.9 ) - RADIANS(latitudine) , ) + POWRADIANS(12.4833 ) - RADIANS(longitudine) , ) ) , ) AS distance_pt FROM sab_city_country WHERE longitudine is not null and latitudine is not null AND city_id <> -126693 AND TRUNCATE 6363 sqrtPOWRADIANS(41.9 ) - RADIANS(latitudine) , ) + POWRADIANS(12.4833 ) - RADIANS(longitudine) , ) ) , ) < 40 ORDER BY distance_pt ASC LIMIT 5 

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.