Problem z zapytaniem MySQL

Problem z zapytaniem MySQL
NO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 654
0

Witam serdecznie,
Mam zapytanie:

Kopiuj
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:

Kopiuj
#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ć?

MM
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 91
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.

Haskell
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4700
0

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

NO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 654
0

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

NO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 654
0
Haskell napisał(a):

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

Czyli nie da się tego naprawić? :(

axelbest
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 2255
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

NO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 654
0

myślisz o czymś takim:

Kopiuj
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 :(

NO
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 654
0
Kopiuj
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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.