LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
12
返回列表 发新帖
楼主: yanglei1979

多选属性该怎么安排数据结构

[复制链接]
发表于 2007-4-1 08:28:07 | 显示全部楼层
Post by yanglei1979

如果用多表关联来做的话,要查询的话,是很困难的,也就是说根本没法分页查询输出,因为有单选的属性在第一个表里面,而又有多选的产品属性在第二个表里面.所以用多对多的关系来处理的话,没法去搜索,请问该怎么安排呢?
非常感谢!

规范的做法是多表关联。
你感到很困难是因为你不会写联合的SQL语句
回复 支持 反对

使用道具 举报

发表于 2007-4-1 08:30:07 | 显示全部楼层
Post by yanglei1979
多对多的关系,我已经通过实例研究过了,记录倒是可以记录,但要用PHP程序对符合单选属性和符合多选属性的内容进行搜索的时候,是没法实现的,尤其是分页输出,更没法实现,

使用子查询试一试
回复 支持 反对

使用道具 举报

发表于 2007-4-4 12:25:48 | 显示全部楼层

一点小建议

在这个长$_GET中我会这会做,照楼主的用if感觉代码太长了
<?php
//把$_GET['***']中***的所有涉及到取值的键放在一个数据里
$key= array('name','type',......);
$reault= '';

foreach($key as &$value){
   $result .= $_GET[$value]==NULL?''_GET[$value];
}

echo $result;//应该也能得到想要的东西吧
?>
回复 支持 反对

使用道具 举报

发表于 2007-5-25 04:52:51 | 显示全部楼层
一个字符串字段,长度定死,比如10个属性长度就是10
储存时用一串二进制数表示,比如0111011001这样
查询时用脚本生成指定的数据,比如要求第二项第三项第六项第七项是被选的,那么就_11__11____,不作要求的项用下划线代替,这个表示一个长度的通配符,然后放入到查询的where语句中就可以了
如果查询的值如上述所说是逻辑关系,那就用1和0
如果是一种多重选择,比如每一项涉及多个选择,那就用2呀3呀这些字符表示,总之灵活应用下划线就可以了。
以上思路,仅供参考,如果不妥,欢迎指正
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表