在多对多数据库设计中选择LIKE运算符

时间:2011-07-30 14:15:35

标签: mysql sql database select many-to-many

我需要选择帮助,但在提出问题之前,我会简要介绍一下我的系统如何运作:

表我想做select,有多对多关系,如下所示:

table product:
prd_cod(pk) //stores the product code ex: 0,1,2
cat_cod(fk) 
prd_name    //stores the product name, ex: tv, gps, notebook

table description_characteristc:
prd_cod(fk) 
id_characteristic(fk)
description //stores the description of the characteristic, ex: sony, 1kg, hj10

table characteristic:
id_characteristic (pk)
name_characteristic //store the name of characteristic, ex: brand, weight, model

我已经准备好了index.php,一个建议jquery,我输入的每个单词都调用一个php文件,它会产生一个select并返回结果,限制为10,但是这表明我已经准备好了互联网,因此它的选择与我的商业规则不符,但我想对此建议实施一个新的选择。

与'%'类似的选择,必须将表格description_characteristc的prd_name和所有描述带到建议框。当用户点击结果时,每个参数将被发送到另一个.php,但我现在不需要,

当用户输入'tv'时,select会带来结果:

tv 
tv led
tv plasm
tv samsumg

当用户输入'tv s'时,select将带来结果:

tv sony
tv samsumg
tv salom
tv sxxxx etc

记住prd_name只存储'tv'

1 个答案:

答案 0 :(得分:0)

尝试此查询,将两个表连接在一起。 where子句的第一部分将减少product表中的行数,第二部分将匹配相关描述。

注意:此查询可能效率不高。

select p.prd_name, d.description
from product p
    inner join description_characteristc d using (prd_cod)

where _user_input_ like concat(p.prd_name, '%')
  and concat(p.prd_name, ' ', d.description) like concat(_user_input_, '%');