php - 尝试按产品类别将标签与产品相关联

标签 php jquery mysql ajax codeigniter

好的,这就是我正在尝试做的事情。我有一个标签(pid,tag)和一个产品(id, name)。有大量与一种产品相关的标签。

我有一个标签过滤器选项,我可以在其中选择标签,它将按标签过滤产品。可以查询 1 个标签,也可以查询 10 个标签。例如,有包含所有标签的复选框,用户可以选择任意数量的标签,并且它应该过滤具有这些标签关联的产品。

似乎无法找出最快的方法来做到这一点。

我可以很快地获取每个产品标签,但是如何通过标签获取每个产品的标签。这就是我所期待的。

正在搜索的标签:“甲板安装,单,3英寸”

产品

id,名称,阵列(甲板安装,单,3英寸,海峡,黑色,绿色,蓝色)

select p.* 
from products p 
HAVING p.loc_cat = 'Faucets' 
AND (select pid 
     from tags 
     where pid = p.id 
     AND tag = 'BODY:DECK MOUNT');

这是我正在使用的查询的示例。这是两个表。

CREATE TABLE `tags` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `tag` varchar(255) NOT NULL DEFAULT '',
  `pid` varchar(255) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=23128 DEFAULT CHARSET=latin1;

CREATE TABLE `products` (
  `prod_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `list` varchar(255) DEFAULT NULL,
  `desc` text,
  `harmonize` varchar(255) DEFAULT NULL,
  `id` varchar(255) DEFAULT '',
  `loc_cat` varchar(255) DEFAULT '',
  `loc_desc` varchar(255) DEFAULT '',
  `pcode` int(100) DEFAULT NULL,
  `pcodedesc` varchar(255) DEFAULT '',
  `pid` varchar(255) DEFAULT NULL,
  `search_string` text,
  `upc` varchar(255) DEFAULT NULL,
  `date__updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`prod_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3908 DEFAULT CHARSET=latin1;

标签栏中有多个标签与一个产品相关。我正在使用 ajax 搜索一组标签来获取产品 id 来获取产品。问题是有太多,所以需要很长时间。我想我想多了。

每次选中复选框时,我都会运行查询并发送所有选定复选框的逗号分隔字符串。

最佳答案

终于明白了各位。这是我现在的查询。

select p.*, 
   (select GROUP_CONCAT(tag) from tags where pid = p.id) as tags 
   from products p 
   HAVING p.loc_cat = 'Pre-rinse Units' 
   AND tags LIKE '%BODY:DECK MOUNT%' AND tags LIKE '%BODY:SINGLE%'; 

关于php - 尝试按产品类别将标签与产品相关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23702733/

相关文章:

javascript - 显示 PDF 但不下载

php - 在 PHP 或 MySQL 中按日期(月年)排序

jquery - 如何在加载页面时显示此模式弹出窗口

php - Ajax PHP 变量传递

php - 在 PHP/CodeIgniter 中,不止一个事务在没有完成另一个事务的情况下开始;比如嵌套事务

Mysql:没有主键的分区

php - 通过 $_ENV 使用 .env 文件中的参数是否正常?

php - 使用 jQuery 确定当前跨度 css 内容 : url(. ../...) 值

javascript - 如何将页面上的多个 j 查询脚本合并为一个?

java - 使用日历后验证文本框