Zur Navigation

sortieren der ergebnisse aus db

1 schurik

Hallo Jörg,

wie kann meine Ergebnisse besser sortieren.

In meine Website www.2muchrooms.com
http://www.2muchrooms.com werden die Hotels nach Stadt oder Region gesucht.

Z.B. ein user Sucht nach Hotels in Frankfurt.

Die Hotels z.B. aus Darmstadt werden in der bd auch bei der Region Frankfurt zugeordnet.

In der Liste werden die Hotels für das Suchwort "Frankfurt" durcheinnader angezeigt.

Ich möchte nach dem "Suchwort" sortieren so, dass die Hotels in der gesuchten Stadt zuerst gelistet werden.
Dann alle anderen im Umkreis.

Geht das in der MySQL abfrage: ORDER BY.

Eine kleine Frage noch.
Kann man die Umkreissuche mit Googlemaps verbinden?

Kann mir google im Hintergrund die Entfernung von jedem Hotel bis zum Zentrum der gesuchten Stadt rausfinden und nur die km zur verfügung stellen?

Oh das wird nicht einfach

Danke, Danke

19.02.2007 20:59

2 Jörg Kruse

WEnn vorhanden, kannst du mithilfe von ORDER BY nach der Spalte der Städtenamen sortieren

SELECT * FROM hotels WHERE region = 'Frankfurt' ORDER BY stadt

Das ergibt dann eine alphabetische Anordnung nach Städten

Ich möchte nach dem "Suchwort" sortieren so, dass die Hotels in der gesuchten Stadt zuerst gelistet werden.
Dann alle anderen im Umkreis.

Das könntest du mit zwei aufeinanderfolgenden Queries bewerkstelligen. In der ersten fragst du die Hotels, die in der Stadt Frankfurt liegen, in der zweiten die Hotels, die sich in der Region Frankfurt befinden, aber nicht in der Stadt Frankfurt. Die Resultate werden in zwei gesonderten Schleifen nacheinander ausgegeben

Kann man die Umkreissuche mit Googlemaps verbinden?

Kann mir google im Hintergrund die Entfernung von jedem Hotel bis zum Zentrum der gesuchten Stadt rausfinden und nur die km zur verfügung stellen?

Da bin ich leider überfragt, da ich selbst noch nicht mit Googlemaps gearbeitet habe. Vielleicht kann jemand anders etwas dazu sagen (gegebenenfalls dazu einen gesonderten Thread eröffnen)

19.02.2007 22:50

3 Rudy

Die Resultate werden in zwei gesonderten Schleifen nacheinander ausgegeben
Das wird überflüssig, wenn man ein case-label in der Sortierung benutzt. Wenn die Stadt das gesuchte Wort enthält, werden diese Suchergebnisse zuerst angezeigt, danach nach Stadt und region geordnet.

SELECT * FROM hotels 
WHERE region LIKE '%frankfurt%' OR stadt LIKE '%frankfurt%' ORDER BY CASE WHEN stadt LIKE '%frankfurt%' THEN 1 ELSE 2 END, stadt, region

Verfeinern könnte man es noch so:

SELECT * FROM hotels 
WHERE region LIKE '%frankfurt%' OR stadt LIKE '%frankfurt%' ORDER BY CASE WHEN stadt = 'frankfurt' THEN 0 WHEN stadt LIKE '%frankfurt%' THEN 1 ELSE 2 END, stadt, region

Am Arbeitsplatz nutze ich diese des öfteren - beispielsweise wenn ich möchte, dass zuerst der Wert 'z' angezeigt wird, danach 'a', und dann 'e' (mit normaler Sortierung nicht zu schaffen)

SELECT * FROM letters WHERE wert IN ('a', 'e', 'z') ORDER BY CASE wert WHEN 'z' THEN 1 WHEN 'a' THEN 2 ELSE 3 END

20.02.2007 08:51 | geändert: 20.02.2007 09:28

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]