Plz abfragen mit einigen Hindernissen
M.Fischer
- datenbank
0 Henning Bösch0 Ilja0 Henk Strobel
Hallo,
ich mache jetzt schon eine Weilchen an einer nicht gerade einfachen Abfrage von Postleitzahlen rum und es gelingt mir nicht so ganz.
Ich möchte eine MySql Datenbank und PHP nach Postleitzahlen abfragen.
Mit SELECT kein Problem.
Jetzt sollte aber, wenn die zu suchende PLZ in der Datenbank nicht enthalten ist, die am nächsten liegende Plz in der Datenbank angezeigt werden. Entweder eine kleinere oder größere Plz. Eben die Plz, die am nächsten zu der gesuchten liegt.
Wenn die kleinere oder größere Plz aber mehrmals in der Datenbank enthalten ist soll zusätzlich per random (Zufall) eine der merfachen kleinere oder größere Plz augewählt werden so daß jedesmal eine andere Plz zu sehen ist.
Ich habe es hier schon mit min und Max versucht:
$sql1 = " SELECT Max(plz) AS kleiner FROM test where plz < '$suche'";
oder
$sql = "SELECT Min(plz) AS groesser FROM test where plz > '$suche'";
oder
$sql = "SELECT * FROM test where plz > '$suche' or plz < '$suche'";
die letzte Möglichkeit ging ganz gut. Aber die Weiterverarbeitung der Ergebnisse und die Randomfunktion ist hier mein Problem.
Hat hier jemand ein Lösung. Vielen Dank im Voraus.
Gruß M.Fischer
Hallo,
ein kleiner Hinweis. Ich weiß nicht, ob es für die Aufgabenstellung wichtig ist, aber die mathematisch gesehen nächste PLZ muss nicht die geographisch gesehen nächste PLZ sein.
Gruß,
Henning
yo,
zum einen ist dr tipp von henning schon mal sehr gut, was die semantik betrifft. falls du trotzdem immer noch eine solche lösung suchst, dann musst du über zwei abfragen oder einer unterabfrage gehen. aus performance gründen würd ich das in zwei abfragen machen.
die erste abfrage ermittelt den nächsten wert, falls es kenie entsprechnde plz gibt. das kannst du mit den aggregatfunktionen min() und max() machen, so ähnlch wie du es geschrieben hast. das noch mit einem limit kombiniert sollte dir jeweils einen wert zurückgeben.
mit der zweiten abfrage liest du nun alle datensätze ein, die dem wert der ersten abfrage entprechen. nun wählst du von davon wiederum einen zufälligen datensatz aus, entweder über mysql oder php.
Ilja
Hallo,
die mathematisch gesehen nächste PLZ muss nicht die geographisch gesehen nächste PLZ sein.
Genau!
Und dafür gibt es http://www.opengeodb.de/...
Gruß Henk