首页 > 解决方案 > 如何通过 3 级表达式和语句创建 sql select

问题描述

如何通过 3 级表达式和语句创建 sql select

通常,我的网站基于 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 将在 Category 列中检查为$sql = "SELECT DISTINCT * FROM amz WHERE Category LIKE \"$qq%\" GROUP BY Title";
  3. 最后,如果每列不匹配。SQL 结果将回显自定义消息。

我试着用自己创造。但结果似乎只有 echo 1.) 选项。

例子:

我搜索“床上用品套装”。并且在数据库中的标题列中,产品包含此关键字而没有(s)。

最初,将检​​查一个表达式是否匹配 1)。语句将从标题或价格列中选择产品。

但是,在“类别”列中。我将每个产品的特定类别声明为类别,例如“床上用品套装”。

因此,如果搜索与标题或价格中的床罩套装不匹配。结果将在“类别”而不是“标题”或“价格”列中显示匹配被褥套组搜索查询的产品。

最后,如果不是搜索查询,则每列中的任何一个都不匹配,将回显自定义消息。

额外的:

这是查询 1 和查询 2 结果之间的屏幕截图

在此处输入图像描述

此屏幕截图是查询 1 结果,该结果在数据库中的 Title 列或 Price 列中搜索不带 (s) 的关键字并且喜欢或匹配。

在此处输入图像描述

此屏幕截图是查询 2 结果,在类别列中使用喜欢或匹配的 (s) 搜索关键字。这很奇怪,因为当我将它设置为显示结果时它变成了 Not Found。

在此处输入图像描述

这是我的编码,我不确定它是否正确?

谢谢

问候

标签: phphtmlsqlsqlitesearch

解决方案


是否需要编写一个 sql 来完成此操作?

您基本上已经编写了伪代码:

  1. 默认将搜索并显示结果为 $sql = "SELECT DISTINCT * FROM amz WHERE Title LIKE \"$qq%\" OR Price LIKE \"$qq%\" GROUP BY Title";
  2. 如果在标题和价格列中找不到任何搜索结果。然后 SQL 将在 Category 列中检查为 $sql = "SELECT DISTINCT * FROM amz WHERE Category LIKE \"$qq%\" GROUP BY Title";
  3. 最后,如果每列不匹配。SQL 结果将回显自定义消息。

现在开始用机器理解的语言来表达它。一个起点:

如果结果集不为空,则从查询 1执行并获取结果,否则显示结果
   如果结果集不为空,则从查询 2 执行并获取结果否则显示结果
   
     
     

--EDIT --
根据代码截图,您根本没有运行提到的查询,而是运行str_repl. 这似乎把它变成了一个聚合查询(COUNT(*)),聚合查询总是返回至少一行。这可能会导致这个问题。


推荐阅读