databaseabfrage zur search mit Adresse

Ich entwickle eine Suchfunktion, um Händler nach ihrer Adresse (z. B. nach Postleitzahl (PLZ) oder nach Name oder Stadt) für mein Projekt zu suchen. Der Benutzer erhält nur ein HTML-Eingabefeld zur Eingabe des Suchbegriffs (Benutzer können jeweils nur einen Suchbegriff eingeben, dh entweder Postleitzahl oder Name oder Stadt (Kombinationen sind nicht erlaubt)). Die Bedingungen zum Entwickeln einer Abfrage sind wie folgt

  1. Wenn Benutzer nach Postleitzahl suchen, sollten übereinstimmende Ergebnisse in absteigender Reihenfolge angezeigt werden
  2. Bei der search nach Namen mit übereinstimmenden Ergebnissen sollte die Anzeige alphabetisch erfolgen
  3. Genauso wie der Name der Stadt

Manchmal besteht die Möglichkeit, dass der Name auch eine Postleitzahl enthält. In diesem Fall sollten die Ergebnisse durch die Postleitzahl verkürzt werden.

Ich habe es so versucht

select city, postcode, name from dealers where name ='xyz' OR postcode ='xyz' OR city='XYZ' ORDER BY postcode desc 

Aber ich möchte 'ORDER BY' für jede Bedingung. zum Beispiel stimmt 'xyz' mit dem Vornamen überein. Ich möchte das Ergebnis in aufsteigender Reihenfolge sortieren. Wie kann ich das machen?

Solutions Collecting From Web of "databaseabfrage zur search mit Adresse"

Das Leben wäre einfacher, wenn alle Ihre Begriffe in aufsteigender Reihenfolge sortiert wären.

Ich nehme an, dass Ihre tatsächliche Anwendung eine Variable statt einer fest codierten characterfolge verwendet. Die Lösung sollte also ungefähr so ​​aussehen:

  select city, postcode, name from dealers where name = p_search_term OR postcode = p_search_term OR city = p_search_term ORDER BY case when postcode = p_search_term then p_search_term else 1 end desc , case when name = p_search_term then p_search_term else city end asc 

In MySQL machst du das so:

  "SELECT `zip`, `name`, `city` FROM `dealers` WHERE `zip` = '$zip' ORDER BY `zip` DESC" "SELECT `zip`, `name`, `city` FROM `dealers` WHERE `name` = '$name' ORDER BY `name`" "SELECT `zip`, `name`, `city` FROM `dealers` WHERE `city` = '$city' ORDER BY `city`" 

Ich benutze Oracle nicht, aber ich denke, dass es dasselbe ist. (Dieser Code geht davon aus, dass zip ein varchar ist, wenn es sich um einen ganzzahligen Wert handelt, entfernen Sie einfach das '')