Hallo an alle,
ich habe da ein Problem, was mich nicht mehr schlafen lässt.
Ich habe 2 tabellen, eine mit Geodaten plz/länge/breite. Hier mache ich eine Umkreissuche, die auch einwandfrei funktioniert.
Eine weitere Tabelle enthält die eigentlichen Daten, die mit der Umkreissuche ausgegeben werden sollen. Auch diese Verknüpfung stellt kein Problem dar.
Doch ist es so, dass ich in manchen Städten, gerade Berlin und München, mehr als 200 Datensätze habe, die in der Umkreissuche ausgegeben werden.
Hier soll eine google ähnliche Navigation eingebaut werde. Auch dieses Prinzip ist klar und funktioniert, wenn ich eine "feste" plz angebe, jedoch nicht, wenn die Daten dynamisch aus der ersten Abfrage kommen.
Das Problem:
Wie kann ich diese beiden Scripte verbinden. Die Postleitzahlen / Umkreissuche arbeitet in der Ausgabe mit:
foreach ($treffer as $value => $wert) {
...
}
Die anschließende Verknüpfung geht mit:
$sql = "SELECT name, strasse, plz, ort,url
FROM x_kd where plz = $value";
Wenn ich nun hier ein Array baue und eine weitere sql Abfrage einbaue, die mir per array die betreffenden plz's ausgibt, habe ich das Problem, dass es mir bei einer WHERE ... IN Abfrage die Reihenfolge zerhaut, da er die Datensätze in der Tabelle der Reihenfolge nach abarbeitet und dann (Entfernungsangaben sind mit dabei) diese nicht mehr in der richtigen Reihenfolge angibt.
Da wir ja nach dem plz Suche statement noch einige Ecken und Radiusberechnungen zu erledigen haben, wüsste ich auch nicht, wie ein join Befehl aussehen sollte.
Das einzige, was ich noch nicht ausprobiert habe ist ein array aus den gefundenen ID's zu machen, da jede nur einmal vorkommt (im Gegensatz zur PLZ) wäre das wohl besser, doch dann muss ich für jeden Datensatz nochmal eine Entfernungsberechung machen, was die Performance zu stark beeinflusst. Außerdem habe ich dann immer noch das Problem des "Sortierens nach Entfernung", da er sicherlich wieder die Datenbank vom ersten bis zum Letzten Datensatz durchgeht und nicht in der Reihenfolge des Arrays.
Hat jemand von Euch schon mal so ein Problem gelöst, also generell eine Umkreissuche mit pagination (google Navigation)???
Wäre toll, wenn ich was von Euch hören würde.
Danke
ich habe da ein Problem, was mich nicht mehr schlafen lässt.
Ich habe 2 tabellen, eine mit Geodaten plz/länge/breite. Hier mache ich eine Umkreissuche, die auch einwandfrei funktioniert.
Eine weitere Tabelle enthält die eigentlichen Daten, die mit der Umkreissuche ausgegeben werden sollen. Auch diese Verknüpfung stellt kein Problem dar.
Doch ist es so, dass ich in manchen Städten, gerade Berlin und München, mehr als 200 Datensätze habe, die in der Umkreissuche ausgegeben werden.
Hier soll eine google ähnliche Navigation eingebaut werde. Auch dieses Prinzip ist klar und funktioniert, wenn ich eine "feste" plz angebe, jedoch nicht, wenn die Daten dynamisch aus der ersten Abfrage kommen.
Das Problem:
Wie kann ich diese beiden Scripte verbinden. Die Postleitzahlen / Umkreissuche arbeitet in der Ausgabe mit:
foreach ($treffer as $value => $wert) {
...
}
Die anschließende Verknüpfung geht mit:
$sql = "SELECT name, strasse, plz, ort,url
FROM x_kd where plz = $value";
Wenn ich nun hier ein Array baue und eine weitere sql Abfrage einbaue, die mir per array die betreffenden plz's ausgibt, habe ich das Problem, dass es mir bei einer WHERE ... IN Abfrage die Reihenfolge zerhaut, da er die Datensätze in der Tabelle der Reihenfolge nach abarbeitet und dann (Entfernungsangaben sind mit dabei) diese nicht mehr in der richtigen Reihenfolge angibt.
Da wir ja nach dem plz Suche statement noch einige Ecken und Radiusberechnungen zu erledigen haben, wüsste ich auch nicht, wie ein join Befehl aussehen sollte.
Das einzige, was ich noch nicht ausprobiert habe ist ein array aus den gefundenen ID's zu machen, da jede nur einmal vorkommt (im Gegensatz zur PLZ) wäre das wohl besser, doch dann muss ich für jeden Datensatz nochmal eine Entfernungsberechung machen, was die Performance zu stark beeinflusst. Außerdem habe ich dann immer noch das Problem des "Sortierens nach Entfernung", da er sicherlich wieder die Datenbank vom ersten bis zum Letzten Datensatz durchgeht und nicht in der Reihenfolge des Arrays.
Hat jemand von Euch schon mal so ein Problem gelöst, also generell eine Umkreissuche mit pagination (google Navigation)???
Wäre toll, wenn ich was von Euch hören würde.
Danke
Kommentar