私は、Oracle Database クエリ開発の初心者です。ZipまたはNameまたはCityでStores を検索するプロジェクトの検索機能を開発しています。この場合、ユーザーは検索語を入力するための「1 つの HTML 入力ボックス」が提供されます。Stores というテーブルのみがあります。
検索結果の表示条件は、
ZIP
結果に一致する検索語がGROUP
and である必要がある場合SORT BY ZIP DESC
- 結果に一致する検索用語
NAME
がグループ化され、並べ替えられ、次NAME IN ASC
と同じである必要がある場合CITY
- 検索用語が
ZIP
,NAME
andCITY
(to all) に一致した場合、最初に に一致した結果がZIP
に表示されDESC order
、次にCITY
The が続きます。NAME
私はこのようないくつかのことを試しました
SELECT 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
このクエリは結果を期待どおりに表示していません (最初の zip、次の都市のように名前が続くのではなく、順序なしで結果を表示していることを意味します)。
上記の要件を満たすためにクエリを実行するにはどうすればよいですか? そのためにストアド プロシージャを使用する必要がありますか? どんな提案でも大歓迎です。