Jetzt Mitglied werden
Kostenlos registrieren und die vielen Vorteile der Webmasterpro-Mitgliedschaft nutzen.
Forum - Entwicklung
- Markup (HTML, XML, etc.) und CSS
- Skriptsprachen (PHP, Javascript, etc.)
- Datenbanken (SQL)
- CMS und Frameworks
- Flash und ActionScript
Info: Der Stern signalisiert, dass neue Beiträge vorhanden sind.
Alle Foren - Übersicht
Portal aktuelle Themen
Design aktuelle Themen
Server aktuelle Themen
- Webhosting und Webspace
- Betriebssysteme (Windows, Linux, etc.)
- Serveradministration
- Überwachung, Sicherheit und Backups
Management aktuelle Themen
Über Webmasterpro.de
Das Portal wird betrieben und entwickelt durch die Team23 Agentur. Die Augsbuger Agentur hat sich auf Community Software und die Entwicklung von Webportalen spezialisiert.
Datenbanken (SQL) - Forum
Derzeit sind Sie als Gast in unserem Forum aktiv. Für das Schreiben registrieren Sie sich bitte. Unser Forum ist eine Austauschplattform für Webworker zum Kommunizieren, Helfen, Informieren und Hilfe finden. Auf der rechten Seiten finden Sie eine Forenübersicht über alle Bereiche des Webmaster-Forums. Unterhalb finden Sie alle aktuellen Themen.
Problem mit WHERE
Hallo, ich habe hier ein SQL-Statement, welches mir an Hand von Longitude und Latitude aus meiner Datenbank den Abstand zu einem bestimmten Standort X ausrechnet und ausgibt.
1 | SELECT *, 6371 * ACos( Cos(RADIANS(Lat)) * Cos(RADIANS(49.0707)) * Cos(RADIANS(7.97057) - RADIANS(Lng)) + Sin(RADIANS(Lat)) * Sin(RADIANS(49.0707)) ) AS Distance FROM GeoPC_DE ORDER BY Distance;
|
Auf der Quellseite heißt es dann weiter, ich könnte über WHERE die Ergebnisse auf eine bestimmte Distanz einschränken. Leider bekomme ich immer eine Fehlermeldung, dass das Feld Dinstance nicht vorhanden wäre, was ja auch so ist! Aber wie soll ich das ganze dann mit WHERE einschränken?
1 | SELECT *, 6371 * ACos( Cos(RADIANS(Lat)) * Cos(RADIANS(49.0707)) * Cos(RADIANS(7.97057) - RADIANS(Lng)) + Sin(RADIANS(Lat)) * Sin(RADIANS(49.0707)) ) AS Distance FROM GeoPC_DE WHERE Distance < 100 ORDER BY Distance;
|
Du musst am Anfang eine Variable deklarieren.
1 2 | DECLARE @Distance int;
SET @Distance = 0;
|
Und dann müsste deine Abfrage so aussehen:
1 | SELECT *, 6371 * ACos( Cos(RADIANS(Lat)) * Cos(RADIANS(49.0707)) * Cos(RADIANS(7.97057) - RADIANS(Lng)) + Sin(RADIANS(Lat)) * Sin(RADIANS(49.0707)) ) AS @Distance FROM GeoPC_DE WHERE @Distance < 100 ORDER BY @Distance;
|
Du musst am Anfang eine Variable deklarieren.
HTML
1 2 DECLARE @Distance int; SET @Distance = 0;
Und dann müsste deine Abfrage so aussehen:
HTML
1 SELECT *, 6371 * ACos( Cos(RADIANS(Lat)) * Cos(RADIANS(49.0707)) * Cos(RADIANS(7.97057) - RADIANS(Lng)) + Sin(RADIANS(Lat)) * Sin(RADIANS(49.0707)) ) AS @Distance FROM GeoPC_DE WHERE @Distance < 100 ORDER BY @Distance;
Erstmal vielen Dank für die Antwort! Leider bekomme ich noch folgenden Fehler, mit dem ich nicht umzugehen weiß:
DECLARE@Distance DOUBLE;
MySQL said:
#1064 - Fehler in der SQL-Syntax. Bitte die korrekte Syntax im Handbuch nachschlagen bei 'DECLARE @Distance DOUBLE' in Zeile 1
Also Google sagt mir, dass der Fehler entweder durch eine negativen Wert oder durch den Server zustande kommt.
Zwischen DECLARE und dem @ muss aber auch ein Leerzeichen stehen. Vielleicht ist's ja wirklich nur ein Syntax-Fehler.
Also bei den Berechnungen kommen unter anderem folgende Werte heraus: 145.380882766905
9.49352979660034e-05
Liegt es vielleicht an letzterem und wenn ja, wie kann ich solche Werte verhindern?!
Okay, ich gebs auf! Es kommt immer derselbe Fehler am Anfang... :(
Dann ist's vielleicht wirklich ein Fehler am Server. Im Internet kursieren vielen Klagen über den Fehler - meistens ist die MySQL Version oder irgendwelche Servereinstellungen schuld.

