Hallo erstmal,
Ich steh grad auf dem Schlauch mit einer SQL-Abfrage. Leider bin ich auch nicht der beste Datenbank-Profi... naja, egal :-D
Zu meinem Problem. Ich habe eine Nutzerdatenbank, in der u.a. auch die Postleitzahl und der Ort eines Nutzers gespeichert sind. Nun habe ich ein Suchskript, mit dessen Hilfe man Personen aus einem bestimmten Ort suchen kann. Da noch nicht wirklich viele Nutzer auf der Plattform sind, möchte ich dabei gleich eine Umgebungssuche einbinden, die Orte mitsucht, die die gleichen Zahlen an den ersten beiden Stellen der PLZ besitzt.
Mal ein Beispiel:
NutzerX hat als Ort "Leipzig" und als PLZ "04229"
Dann sähe die Suchabfrage wie folgt aus:
SELECT * FROM user WHERE ort LIKE 'Leipzig' OR plz LIKE '04%' ORDER BY plz, userid
Das klappt mehr oder weniger gut. Das Problem ist eben bloß, dass, wenn ein Ort eine höhere PLZ hat, erst andere Orte im Suchergebnis kommen und dann erst der eigentlich gesuche Ort. Ich habe daher schon eine Abfrage im PHP, wo alle PLZs, die höher als 5 sind, mit DESC sortiert werden und ansonsten ASC. Aber dennoch ist das Suchergebnis nicht zufriedenstellend.
Meine Frage (na endlich, was?):
Wie kann ich die Abfrage optimieren, dass er mir erst alle Einträge aufzählt, die den eigentlichen Ort beinhalten (also im obigen Beispiel erst alle mit Leipzig) und dann den Rest der PLZ-Suche (also oben alle anderen, die auch '04' an der PLZ haben).
Schön, wäre auch, wenn innerhalb der beiden Abschnitte nach userid DESC mit sortiert würde, so dass die jeweils neuesten Nutzer als erstes kommen.
Ich hoffe, ich hab mich nicht allzu beknackt ausgedrückt und bedanke mich schonmal für eure Antworten...
Nette Grüße aus Leipzig (wer hätte das gedacht *g*)...
Acer82
Ich steh grad auf dem Schlauch mit einer SQL-Abfrage. Leider bin ich auch nicht der beste Datenbank-Profi... naja, egal :-D
Zu meinem Problem. Ich habe eine Nutzerdatenbank, in der u.a. auch die Postleitzahl und der Ort eines Nutzers gespeichert sind. Nun habe ich ein Suchskript, mit dessen Hilfe man Personen aus einem bestimmten Ort suchen kann. Da noch nicht wirklich viele Nutzer auf der Plattform sind, möchte ich dabei gleich eine Umgebungssuche einbinden, die Orte mitsucht, die die gleichen Zahlen an den ersten beiden Stellen der PLZ besitzt.
Mal ein Beispiel:
NutzerX hat als Ort "Leipzig" und als PLZ "04229"
Dann sähe die Suchabfrage wie folgt aus:
SELECT * FROM user WHERE ort LIKE 'Leipzig' OR plz LIKE '04%' ORDER BY plz, userid
Das klappt mehr oder weniger gut. Das Problem ist eben bloß, dass, wenn ein Ort eine höhere PLZ hat, erst andere Orte im Suchergebnis kommen und dann erst der eigentlich gesuche Ort. Ich habe daher schon eine Abfrage im PHP, wo alle PLZs, die höher als 5 sind, mit DESC sortiert werden und ansonsten ASC. Aber dennoch ist das Suchergebnis nicht zufriedenstellend.
Meine Frage (na endlich, was?):
Wie kann ich die Abfrage optimieren, dass er mir erst alle Einträge aufzählt, die den eigentlichen Ort beinhalten (also im obigen Beispiel erst alle mit Leipzig) und dann den Rest der PLZ-Suche (also oben alle anderen, die auch '04' an der PLZ haben).
Schön, wäre auch, wenn innerhalb der beiden Abschnitte nach userid DESC mit sortiert würde, so dass die jeweils neuesten Nutzer als erstes kommen.
Ich hoffe, ich hab mich nicht allzu beknackt ausgedrückt und bedanke mich schonmal für eure Antworten...
Nette Grüße aus Leipzig (wer hätte das gedacht *g*)...
Acer82