落伍者站长论坛's Archiver

huanfengzhizhuo 发表于 2008-7-25 12:14

sql分组问题!

大家看到这个表,其中goods_id字段有一些相同的值,这个值是我的商品的编号,而字段att_value是这个商品的属性,每个商品都有好几种属性。我要做的是一个商品属性的搜索功能,比如说输入一个关键字"支持MP3"和另外一个关键字"GSM" ,要搜索出同时如何这两个属性的商品编号。请问怎么实现?
参考语句:[code]<?php
require_once('search/Connections/search.php');
$pinpai=$_POST['pinpai'];
$wangluo=$_POST['wangluo'];
mysql_select_db($database_search, $search);
$query_search = "SELECT * FROM 724_goods_table where uid in(SELECT DISTINCT goods_id FROM 724_att_value3 where att_value in('$pinpai','$wangluo'))";
$search = mysql_query($query_search, $search) or die(mysql_error());
$row_search = mysql_fetch_assoc($search);
$totalRows_search = mysql_num_rows($search);

?>[/code]
[img]http://shishisj.com/search/2.jpg[/img]

[[i] 本帖最后由 huanfengzhizhuo 于 2008-7-26 10:17 编辑 [/i]]

huanfengzhizhuo 发表于 2008-7-25 17:43

没有人帮忙吗?

xgwu 发表于 2008-7-25 18:20

不是很清楚你的意图
是不是要查出符合条件的记录,然后按照goods_id排序?
这样的话可以用order by,比如:
SELECT DISTINCT goods_id FROM 724_att_value3 where att_value in('是智能手机a','支持手写输入a') [b]order by goods_id[/b]

huanfengzhizhuo 发表于 2008-7-25 19:01

就是把goods_id这个字段里面相同的值分成不同的组,然后按照各自的组去查询,查找出符合in里面的记录!

pxczy 发表于 2008-7-25 21:10

有点复杂,要嵌套吧,有些头晕,不研究了

SonShu 发表于 2008-7-25 22:43

不是十分明白你的意思。

现在查询不是能查到符合条件的数据吗??前面加DISTINCT 是为了去除重复数据吗??

最好吧你要实现的效果说出来。比方说,根据xxx查询,最后数据是XXXX

这样还容易理解一些:( :( 俺理解能力很差

xiepai102 发表于 2008-7-25 22:47

呵呵 高兴成什么样了啊!!!        [url=http://www.llj5.cn]流量计[/url]

zw0371 发表于 2008-7-26 10:05

把问题说明白点估计答案就出来了。

huanfengzhizhuo 发表于 2008-7-26 10:17

谢谢,我已经重新表达意思了!

xgwu 发表于 2008-7-26 16:51

回复 楼主 huanfengzhizhuo 的帖子

select distinct goods_id from 724_att_value3 where
goods_id in (select goods_id from 724_att_value3 where att_value='支持MP3')
and att_value='GSM'

看起来不是很优雅 :(
先根据其中的一个关键字查处符合这个关键字的说有产品,然后在这些产品中查符合第二个关键字的记录。

我认为楼主的表格结构不够好,比较理想的是把att_value的每一个可能的值做成一个boolean列。

[[i] 本帖最后由 xgwu 于 2008-7-26 17:04 编辑 [/i]]

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.