Ich bin sehr Anfänger in Oracle Datenbankabfrage Entwicklung. Ich entwickle eine Suchfunktionalität für mein Projekt zur Suche nach Stores nach PLZ oder Name oder Stadt, wo der Benutzer mit "Ein HTML-Eingabefeld" zur Eingabe des Suchbegriffs versehen wird. Es gibt nur Tabelle namens StoresSuchen und Anzeigen von Ergebnissen nach Relevanz in Oracle
Die Bedingungen für die Anzeige von Suchergebnissen sind
- Wenn der Suchbegriff zu
ZIP
Ergebnisse angepasst sollteGROUP
undSORT BY ZIP DESC
- werden, wenn der Suchbegriff
NAME
Ergebnisse angepasst Gruppe sein sollte und sortieren nachNAME IN ASC
und gleichCITY
- Wenn der Suchbegriff auf
ZIP
,NAME
undabgestimmt ist 210 (alle), dann werden zuerst die auf dieZIP
abgeglichen Resultate sollten nächsteCITY
von The Diese Abfrage soetwas wie diesesSELECT s.uuid AS uuid, COUNT(*) over() AS rowcount FROM Stores s WHERE s.postalcode LIKE '%87%' OR s.city LIKE '%87%' OR CONCAT(CONCAT(s.firstname, ' '),s.lastname) LIKE '%87%' GROUP BY s.city, s.postalcode, CONCAT(CONCAT(s.firstname, ' '),s.lastname), s.uuid ORDER BY CASE WHEN s.postalcode LIKE '%87%' THEN s.postalcode END DESC, CASE WHEN CONCAT(CONCAT(s.firstname, ' '),s.lastname) LIKE '%87%' THEN CONCAT(CONCAT(s.firstname, ' '),s.lastname) ELSE s.postalcode END ASC, CASE WHEN s.city LIKE '%87%' THEN s.city END
versucht, ich habe
NAME
gefolgt in DESC order
angezeigt werden soll, nicht Anzeigen der Ergebnisse wie erwartet (ich meine, es zeigt Ergebnisse ohne Reihenfolge, nicht wie First PLZ, nächste Stadt gefolgt von Name).
Wie kann ich die Abfrage ausführen, um die oben genannten Anforderungen zu erfüllen, muss ich gespeicherte Prozeduren verwenden, um das zu tun? Irgendwelche Vorschläge werden sehr geschätzt.
das klingt wie Hausaufgaben, markieren Sie es als solches, wenn es ist. Es ist auch erschreckend ähnlich dieser Frage heute früh gestellt: http://stackoverflow.com/questions/12564918/why-oracle-is-saying-not-a-group-by-expression – Harrison
Haben Sie versucht, die 'CASE' zu setzen Konstrukt in der 'ORDER BY'-Klausel in die' SELECT'- und 'GROUP BY'-Klauseln? Versuchen Sie es genau so und sehen wir die Ergebnisse. – Rachcha