Как создать SQL выбрать 3 уровня выражения и заявления - PullRequest
0 голосов
/ 20 февраля 2019

Как создать sql select с помощью 3-уровневого выражения и оператора

Обычно мой веб-сайт, основанный на базе данных SQLite, и результат поиска будут отображаться как $ sql =

"SELECT DISTINCT * FROM amz WHERE Title LIKE \"$qq%\" OR Price LIKE \"$qq%\" GROUP BY Title";.

Выше будетбыть поиском и выбрать запрос, который содержит любое ключевое слово для поиска из базы данных в столбце Название или Цена.

Однако мне нужно создать 3 выражения и утверждения из базы данных в виде:

  1. По умолчанию будетпоиск и отображение результатов в виде $sql = "SELECT DISTINCT * FROM amz WHERE Title LIKE \"$qq%\" OR Price LIKE \"$qq%\" GROUP BY Title";
  2. Если не удается найти результаты поиска из столбца Название и Цена.Тогда SQL будет проверяться в столбце Категория как $sql = "SELECT DISTINCT * FROM amz WHERE Category LIKE \"$qq%\" GROUP BY Title";
  3. Наконец, если не совпадают в каждом столбце.Результатом SQL будет эхо-сообщение.

Я пытаюсь создать сам.Но, похоже, результат только эхо 1.).

Пример:

Я ищу «комплект постельного белья».А в столбце «Заголовок в базе данных» продукты содержали это ключевое слово без (и).

Изначально выражение будет проверять, соответствует ли оно 1).Оператор будет выбирать товары из столбца Название или Цена.

Однако в столбце Категория.Я объявляю конкретную категорию для каждого продукта, такую ​​как «комплекты постельного белья» в категории.

Итак, если поиск не соответствует наборам постельного белья в заголовке или цене.Результатом будет отображение продуктов, которые соответствуют поисковому запросу комплектов постельного белья в столбце Категория вместо заголовка или цены.

Наконец, если поисковый запрос не соответствует ни одному в каждом столбце, будет отображаться пользовательское сообщение.

Дополнительно:

Это скриншот, сравнивающий результат запроса 1 и запроса 2

enter image description here

Этот снимок экрана является результатом запроса 1, которыйключевое слово для поиска без (и) и аналогичное или совпадающее значение в столбце заголовка или столбце цены из базы данных.

enter image description here

Этот снимок экрана является результатом запроса 2, в котором ключевое слово поиска имеет(s) которые похожи или совпадают в столбце категории.Это странно, потому что он отображается как Not Found, пока я настраиваю его для отображения результата.

enter image description here

И это мое кодирование, которое я не уверен, правильно это или нет?

Спасибо

С уважением

1 Ответ

0 голосов
/ 20 февраля 2019

Требуется ли написать один sql для достижения этой цели?

Вы, по сути, написали псевдокод:

  1. По умолчанию будет выполняться поиск и отображение результата в виде $ sql = "SELECT DISTINCT * FROM amz WHERE Title LIKE \" $ qq% \ "OR Price LIKE \" $ qq% \ "Заголовок GROUP BY";
  2. Если не удается найти результаты поиска в столбцах «Заголовок» и «Цена».Тогда SQL будет проверяться в столбце Category как $ sql = "SELECT DISTINCT * FROM amz, ГДЕ LIKE Категория \" $ qq% \ "GROUP BY Title";
  3. Наконец, если не совпадают в каждом столбце.Результатом SQL будет эхо-сообщение.

Теперь начните выражать его на языке, понятном машине.Начальная точка:

выполнить и извлечь результат из запроса 1
, если набор результатов не пустой, отобразить результат
else выполнить и извлечь результат иззапрос 2
, если набор результатов не пустой, отобразить результат
else показать пользовательское сообщение

- РЕДАКТИРОВАТЬ -
На основе снимка экранакода, вы не выполняете упомянутые запросы вообще, но какой-то другой запрос, измененный str_repl.Что, по-видимому, превращает его в агрегированный запрос (COUNT(*)), а агрегированные запросы всегда возвращают хотя бы одну строку.Это может вызвать эту проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...