[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jun 2013
    Beiträge
    69

    Umkreissuche SQL mit KM begrenzung

    Hallo alle zusammen,

    ich möchte wie der Titel schon sagt eine
    Umkreissuche mit SQL machen zur verfügung habe X und Y als Kordinaten.

    Bis jetzt habe ich es aber nur hin bekommen das er mir die Daten sortiert ausgiebt welche am nächsten sind.

    Ich brauchen jetzt aber den Distanz wert in KM damit ich das vernüftig eingrenzen kann und nicht nur dir so und so viel nächsten.

    Mein SQL-Befehl sieht bis jetzt so aus:

    SELECT DATEI.*,
    (ACOS(SIN(51.130546*PI()/180)* SIN(XKO*PI()/180) +
    COS(51.130546*PI()/180)*COS(XKO*PI()/180)* COS((8.120452
    -YKO)*PI()/180))) AS DISTANCE
    FROM DATEI ORDER BY DISTANCE DESC

    XKO und YKO sind die Datenbankfelder.

    51.130546 und 8.120452 sind die felder die variabel eingesetzt werden.

    DISTANCE bräuchte ich jetzt irgentwie in KM damit ich sagen kann alle innerhalb von 10KM oder so.

    vielen Dank schon mal,
    Malte

  2. #2
    Registriert seit
    Jun 2001
    Beiträge
    1.975
    Hier ist das gelöst
    Robi
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  3. #3
    Registriert seit
    Jun 2013
    Beiträge
    69
    danke für die schnelle Antwort aber mit
    HAVING geht das nicht der Sag mir immer 'Spalte oder globale Variable DISTANCE nicht gefunden.' und ohne HAVING sehen die werte nicht wirklich nach KM aus

    MFG Malte

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Having ist auch der falsche Ansatz, das geht nur beim Groupby.

    In der Where-Klausel ist der Ausdruck zu wiederholen und kann dann abgefragt werden:

    where ... and abs(Ausdruck) <= 10 ...

    Da das aber Tipparbeit ist (und Fehler sich einschleichen können), kannst du auch

    select * from (
    originalselect ) hugo
    where abs(distance) <= 10

    Die Umrechnung in KM findest du ja in dem anderen Link.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  5. #5
    Registriert seit
    May 2002
    Beiträge
    1.121
    Ich denke deine Formel ist nicht ganz vollständig

    SELECT DATEI.*,
    Cast(6378,388*
    (ACOS(SIN(51.130546*PI()/180)* SIN(XKO*PI()/180) +
    COS(51.130546*PI()/180)*COS(XKO*PI()/180)* COS((8.120452
    -YKO)*PI()/180))) as dec(10, 4))
    AS DISTANCE
    FROM DATEI ORDER BY DISTANCE DESC

    Guckst du auch hier

    Gruß Ronald

  6. #6
    Registriert seit
    May 2002
    Beiträge
    1.121
    PHP-Code:
    with x as (
    SELECT DATEI.*,
    Cast(6378,388*
    (
    ACOS(SIN(51.130546*PI()/180)* SIN(XKO*PI()/180) +
    COS(51.130546*PI()/180)*COS(XKO*PI()/180)* COS((8.120452
    -YKO)*PI()/180))) as dec(104))
    AS 
    DISTANCE
    FROM DATEI 
    )
    Select x.* from x  where DISTANCE 10 ORDER BY DISTANCE DESC 

  7. #7
    Registriert seit
    Jun 2013
    Beiträge
    69
    danke für die ganze Hilfe

    malzusrex du hats rechte jetzt nach vervollständiegung und nach dem ich ich gemerk habe das ich x und y vertauscht habe funktioniert es.

    MFG Malte

Similar Threads

  1. RPGLE - SQL
    By christian_lettner in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 16-11-06, 10:15
  2. SQL - Cursor vernichten ?!?
    By FNeurieser in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 11-10-06, 14:53
  3. SQL und OBJLCK
    By malzusrex in forum IBM i Hauptforum
    Antworten: 8
    Letzter Beitrag: 19-09-06, 11:04
  4. SQL - Fehler
    By Kaufmann in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 28-06-06, 14:11
  5. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 09:43

Tags for this Thread

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •