0
好的,这是我正在尝试做的。我有一个标签列(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以获取产品。问题是有这么多,所以它需要永远。我想我已经在想这件事了。
每当我检查一个复选框时,我运行查询并发送一个逗号分隔的所有选定复选框的字符串。
请发布一些代码 – Ejaz
您将需要构建或使用一个数据库类,它允许您根据需要构建查询。即$ query-> addWhere(“tag.name ='Deck Mount'”) - > addWhere(“tag.name ='3in'”);否则,这只是正确执行连接的问题。如果你回来了,你已经尝试过,我会进一步帮助。 – skrilled
jquery,ajax和codeigniter与这个问题有关吗?到目前为止你做了什么?这是不是很清楚你想要做什么(你可以在你的查询中使用'AND',或许?),发布你正在使用的代码 –