Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Warunek where na kolumnie która jest wyliczana z dwóch pozostałych.
Forum PHP.pl > Forum > Bazy danych > MySQL
szosa
Cześć, mam tabelę zawierającą współrzędne punktu (xa, ya), chcę zrobić zapytanie które po podaniu 2 punktu i maksymalnej długości zwróci mi wyniki których odległość będzie mniejsza od maksymalnej. Czyli coś takiego:


  1. SELECT `xa`, `ya`, SQRT((POW((xa-ya),2)+POW((@xb-@yb),2)) AS `distance` FROM `points` WHERE `distance` <= @maxDistance ORDER BY distance ASC;


Niestety dostaje zwrotkę że kolumna distance nie istnieje. Czy macie może pomysł jak inaczej to ugryźć, myślałem może o Storage procedure ale nie mam pomysłu jak to ugryźć. Z góry dziękuję za pomoc.
trueblue
W klauzuli WHERE musisz podać ponownie wyrażenie, albo użyć zapytania bez WHERE jako podzapytania, a warunek przenieść do zapytania nadrzędnego.
sazian
Albo ja czegoś nie rozumiem albo ten warunek jest bez sensu,
przecież każda kolumna będzie mniejsza lub równa od maksymalnej ...

Mysql ma specjalny typ danych do przechowywania współrzędnych który nazywa się point,
przy jego pomocy i funkcji wbudowanej ST_Distance https://dev.mysql.com/doc/refman/8.0/en/spa...ion_st-distance
możesz łatwo wyznaczyć odległość. Daje to tyle że w warunku możesz użyć ST_Distance(p1,p2)<=coś
trueblue
@maxDistance to nie maksymalna wartość z kolumny distance w tabeli, której swoją drogą nie ma, ale zadana wartość zmiennej.
Autor chce znaleźć wszystkie punkty oddalone od punktu @xb,@yb o nie więcej niż @maxDistance.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.