php - 跨 3 个数据库表的产品搜索

标签 php html mysql search

我正在尝试在我正在构建的电子商务网站上创建产品搜索功能,但遇到了一些麻烦。

我有 3 个表(类别、子类别、产品)

类别表字段:(categoryID, categoryName, active, image)

sub_categories 表字段:(categoryID, categoryName, parentCatID, active, image)

产品表字段:(productID、shortDescription、longDescription、image、catID、subCatID、active、price、delivery、weight)

如果用户输入简短描述或详细描述的任何部分,或者如果用户输入类别或子类别名称的任何部分,我将尝试让我的搜索找到产品,它应该找到这些类别中的所有产品.

我不知道是做一个 JOIN 查询还是多个 SQL 查询。老实说,我已经修改了几个小时,但还没有真正取得进展,现在又回到绘图板上寻求帮助

我的第一次尝试是这样的:

 $catSelect = mysqli_query($con,"SELECT * FROM categories WHERE categoryName LIKE '%{$term}%'"); 
            $row1 = mysqli_fetch_row($catSelect);
 $subCatSelect = mysqli_query($con,"SELECT * FROM sub_categories WHERE categoryName LIKE '%{$term}%' OR parentCatID = '%{$row1[0]}%'");
            $row2 = mysqli_fetch_row($subcatSelect);
            $productSelect = mysqli_query($con,"SELECT * FROM products WHERE short_description LIKE '%{$term}%' OR long_description LIKE '%{$term}%' OR subCatID = '%{$row2[0]}%' OR catID = '%{$row1[0]}%'"); 

我最后的尝试是这样的

mysqli_query($con,"SELECT * FROM products  INNER JOIN categories ON products.catID = categories.categoryID WHERE categories.categoryName LIKE '%{$term}%'") or die(mysqli_error());

有人可以帮我解决我需要使用的 SQL 查询吗?

最佳答案

试试这个:

SELECT
    p.productID
FROM
    products p
LEFT JOIN categories c
    ON c.categoryID = p.catID
LEFT JOIN sub_categories sc
    ON sc.categoryID = p.subCatID
WHERE
    p.shortDescription LIKE '%keyword%'
    OR p.longDescription LIKE '%keyword%'
    OR c.categoryName LIKE '%keyword%'
    OR sc.categoryName LIKE '%keyword%'

关于php - 跨 3 个数据库表的产品搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17041066/

相关文章:

php - 如何为多个子域设置 Yii,使 protected 文件夹位于每个子域的文档根目录之外

php - nodejs - 阻止 php 脚本利用尝试

html - 如何让 Web 组件的宽度和高度被其子组件继承?

MySQL表数据问题?

php - is_numeric() 是否意味着 var 对 MySQL 是安全的?

javascript - 无法从 html select 获取值到 php

post - 将 div 设置为 post 方法结果页面的目标容器

html - 如何使图像自动缩放到屏幕

mysql - Nuxt.js 和 axios 不适用于 Express 服务器

php - 如何调试不再有效的 PHP/SQL 代码?