[MySQL] Streckenberechnung

Diskutiere mit über: [MySQL] Streckenberechnung im Datenbanksysteme für das Web Forum

  1. dms

    dms Thread Starter Gast

    Angenommen ich habe eine Tabelle die Streckenabschnitte enthält. Z.B. so:

    Code:
    +------------+------------------+------+-----+---------+----------------+
    | Field      | Type             | Null | Key | Default | Extra          |
    +------------+------------------+------+-----+---------+----------------+
    | id         | int(10) unsigned |      | PRI | NULL    | auto_increment |
    | punkt_a    | int(11)          |      |     | 0       |                |
    | punkt_b    | int(11)          |      |     | 0       |                |
    | entfernung | float(6,2)       |      |     | 0.00    |                |
    +------------+------------------+------+-----+---------+----------------+
    Code:
    +----+---------+---------+------------+
    | id | punkt_a | punkt_b | entfernung |
    +----+---------+---------+------------+
    |  1 |       1 |       2 |       5.00 |
    |  2 |       1 |       3 |       4.00 |
    |  3 |       2 |       3 |       2.00 |
    +----+---------+---------+------------+
    In den Feldern punkt_a und punkt_b sind nur ID's, die zu Orten in einer anderen Tabelle gehören.

    Jetzt würde ich gerne mit einem einzigen Query alle möglichen Strecke zwischen zwei beliebigen Punkten ermitteln. Ist das möglich?

    Für die Punkte 1 und 2 gibt es hier z.B. zwei Wege.

    1<->2 Entfernung 5.00
    1<->3<->2 Entfernung 6.00

    Es wird auch starke Verzweigungen geben, so dass sich eine Strecke zwischen zwei Punkten aus z.B. 10 oder mehr Teilstrecken bilden kann.

    Voraussichtlich wird es maximal 100 Punkte geben.

    Hat jemand eine Idee?
     
  2. dms

    dms Thread Starter Gast

    Eine kleine Änderung hat sich ergeben. Es wird nun rund 250 Orte geben. Sollte aber belanglos sein.
    Wenn es geht sollte das ganze mit MySQL 4.1.1 möglich sein. Wenn es wirklich nicht anders geht ist aber auch 5.x willkommen.
     
  3. Yankee

    Yankee MacUser Mitglied

    Beiträge:
    155
    Zustimmungen:
    0
    Registriert seit:
    27.02.2004
    Ich behaupte, das ist nicht möglich, da nur rekursiv lösbar.
     
  4. TheFallenAngel

    TheFallenAngel MacUser Mitglied

    Beiträge:
    501
    Zustimmungen:
    7
    Registriert seit:
    27.10.2003
    Sind dir die IDs bekannt, oder willst du eine Art Routenplaner basteln?
     
  5. moses_78

    moses_78 MacUser Mitglied

    Beiträge:
    1.322
    Zustimmungen:
    22
    Registriert seit:
    08.04.2005
    warum muss es genau ein query sein?
     
  6. aeuglein

    aeuglein MacUser Mitglied

    Beiträge:
    559
    Zustimmungen:
    0
    Registriert seit:
    17.03.2004
    Die SQL ANSI-92 OOP Sprache wird dir für dein Vorhaben keine geeigneten Werkzeuge liefern... Für einfache Additionen/Multiplikationen reicht sie, aber du möchtest ja eine Art "Rekursion" haben.

    Da würde ich eher eine kleine Anwendung (Skript sogar) entwickeln, was das erledigt.
     
  7. dms

    dms Thread Starter Gast

    Genau, Rekursion. Sowas muss doch mit SQL irgendwie möglich sein. Mit Nutzerfunktionen vielleicht irgendiwe?...

    Die ID's sind nicht bekannt. Ich muss die Strecken zwischen beliebigen Punkten ermitteln können. Routenplaner wäre eine gute Beschreibung für das Vorhaben.

    Bei dem Projekt muss ich peinlichst genau auf Performance achten. Mir ist klar dass es mit mehreren Query's bzw. durch das Ermitteln aller Einträge und Berechnung per Script einfacher bzw. überhaupt möglich ist. Aber wo wäre dann die Herausforderung. :)

    So würde ich es natürlich machen wenn es anders nicht möglich ist. Ich wollte nur erst meine Möglichkeiten wissen.
     
  8. Yankee

    Yankee MacUser Mitglied

    Beiträge:
    155
    Zustimmungen:
    0
    Registriert seit:
    27.02.2004
    Nicht mit MySQL
     
  9. Yankee

    Yankee MacUser Mitglied

    Beiträge:
    155
    Zustimmungen:
    0
    Registriert seit:
    27.02.2004
    Eine Möglichkeit, die vielen Queries zu beschleunigen, wären prepared statements. Denn wenn Du rekursiv suchst, wirst Du immer wieder den gleichen Query ausführen. Das kann mit oben genanntem Mechanismus optimiert werden. Allerdings wird auch das bei vielen Queries nicht ausreichend performant sein.
     
  10. eSynth

    eSynth MacUser Mitglied

    Beiträge:
    491
    Zustimmungen:
    0
    Registriert seit:
    15.07.2005
Die Seite wird geladen...
Ähnliche Themen - [MySQL] Streckenberechnung Forum Datum
Mysql - Duplicates abfangen, mit php oder mit unique keys? Datenbanksysteme für das Web 08.03.2016
mysql abfrage optimieren Datenbanksysteme für das Web 26.03.2014
php - mysql_error != mysqli_error - mysql meldet Fehler, mysqli nicht Datenbanksysteme für das Web 05.07.2013
Fragen & Hilfe zu Projekt mit php & mySQL Integration Datenbanksysteme für das Web 01.07.2013
Fragen zu MySql Datenbanksysteme für das Web 04.03.2013

Diese Seite empfehlen

Benutzerdefinierte Suche