Problem z zapytaniem MySQL

0

Witam serdecznie,
Mam zapytanie:

SELECT id FROM baza WHERE ( ((SQRT ( (szer - 51.8566932) ^ 2 + (dl - 4.3604945) ^ 2)) * 111.2 < 5 ) ) ORDER by id ASC

Które zwraca mi błąd:

#1690 - BIGINT UNSIGNED value is out of range in '(((`radio`.`baza `.`szer` - 51.8566932) ^ 2) + ((`radio`.`baza `.`dl` - 4.3604945) ^ 2))'

Wie ktoś może jak to naprawić?

0

pewnie w kolumnie "dl" i/lub "szer" masz wartości puste (null) i stąd problem. Poczytaj np. o funkcji ifnull(argument,wartość) i użyj ją w zapytaniu - powinno pomóc.

0

Komunikat mówi, że przekroczyłeś zakres (liczba jest zbyt duża).

0

Puste nie są, niektóre mają wpisane "0.000000", ale nawet jak skasuje te rekordy to nie działa :(

0
Haskell napisał(a):

Komunikat mówi, że przekroczyłeś zakres (liczba jest zbyt duża).

Czyli nie da się tego naprawić? :(

0

Da się - możesz spróbować zrzutować szer i dl na signed - https://dev.mysql.com/doc/refman/5.7/en/cast-functions.html

0

myślisz o czymś takim:

SELECT *,  CAST(szer AS SIGNED), CAST(dl AS SIGNED) FROM `baza` WHERE ( ((SQRT ( (szer - 51.8566932) ^ 2 + (dl - 4.3604945) ^ 2)) * 111.2 < 5 ) and dl <> '0.000000' and szer <> '0.000000' )

? Jeśli tak, to niestety to nie działa :(

0
SELECT * FROM baza WHERE ( ((SQRT ( (cast(szer as signed) - 51.8566932) ^ 2 + (cast(dl as signed) - 4.3604945) ^ 2)) * 111.2 < 5 ) )                                             

też nie działa :(

http://serwer1356363.home.pl/pub/baza.sql - tutaj jest plik z bazą, może łatwiej będzie

1 użytkowników online, w tym zalogowanych: 0, gości: 1