mysql数据排序问题

liubi 2005-09-29 09:53:11
travelline 数据表:

id uid province city title message
1 8 湖南 长沙 长沙韶山一日游 具体游览景点......
.....................

travelline数据表内是所有会员发布的旅游线路(uid)是会员唯一标识

实际问题:
1,当进入长沙(当然其它城市一样处理)时,旅游线路栏目内显示所有city为长沙的线路,但花钱买的则显示在前面,其它显示在后面。

2,会员也可以购买原本是长沙的线路,但在武汉的显示权,(比如说一条线路游几个城市,先长沙,再武汉,最后北京)

3,以上显示排序不一定都在都一位,有可能1在第一位,2由于第一位已被其它线路占了,只能排第二位了。


以上问题不知如何设计有效的数据表。
哪位有这方面经验或知道处理的。能否提供一些帮助,谢谢。
...全文
255 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
helloyou0 2005-10-04
  • 打赏
  • 举报
回复
on和where之间如何互相影响我也不是太清楚。
一般on后面我只放两表关联的条件,其它的我都是放在where里的,
只要结果正确,应该没太大关系。
liubi 2005-10-04
  • 打赏
  • 举报
回复
helloyou0(你好!) 你的答案已解答对了该题。非常感谢。

在此之前我是用以下这个解答的,虽然结果也符合要求,但不知写法有没有不妥的地方。请指点下。

select * from travelline
left join money on travelline.id=money.travelline_id
and money.city='长沙' //多了这行,但这样解决了如果同一条线路推广到不同城市,也只显示与本城市有关的一条
where (money.city="长沙" or travelline.city="长沙")
order by money desc
helloyou0 2005-10-03
  • 打赏
  • 举报
回复
大体如此。 你针对你的数据再调整一下。
helloyou0 2005-10-03
  • 打赏
  • 举报
回复
travelline 数据表:
id uid province city title message
1 8 湖南 长沙 长沙韶山一日游 具体游览景点......
money 表
id travelline_id(travelline中id) city(显示权地) money(钱)
1 1 长沙 880
2 1 武汉 500

排序:(对于长沙)
select * from travelline left join money
on travelline.id=money.travelline_id where (money.city="长沙" or travelline.city="长沙")
order by money desc
helloyou0 2005-10-03
  • 打赏
  • 举报
回复
你排序是根据显示权城市的。
一个线路在一个显示权城市只有一次(因为他只交一份钱)

不过上面那个sql要改一下
select * from travelline left join money
on travelline.id=money.travelline_id where (money.city="长沙" or
(travelline.city="长沙" and money.city is NULL ))
order by money desc

另外如果你让没交钱的设为money=0,同样在money表插入记录的话
那么sql可以简化为
select * from travelline,money
where travelline.id=money.travelline_id and money.city="长沙"
order by money desc
liubi 2005-10-03
  • 打赏
  • 举报
回复
那在traveline中的线路排序问题,如何解决!就是不会写那个排序代码。
helloyou0 2005-10-03
  • 打赏
  • 举报
回复
还是加个表比较好

id travelline_id(travelline中id) city(显示权地) money(钱)
1 1 长沙 880
2 1 武汉 500

类似这样
liubi 2005-10-03
  • 打赏
  • 举报
回复
非常感谢 helloyou0(你好!) 的回复。

按照你的思路,出现了问题,就是如果同一条线路推广了N个城市,则结果中出现了该线路 N 次。
liubi 2005-09-29
  • 打赏
  • 举报
回复
非常感谢 唠叨 兄的回答。

第2点的回答没看明白。

可能我没把问题描述更清楚,当然,为了解决这个问题还可以多设计几个数据表的。

再总的描述要实现的问题一下。

在 travelline 中 poperdom字段中 数据如何写 以 id=1 的线路为例。

id uid province city title money popedom
1 8 湖南 长沙 长沙韶山一日游 880 长沙,武汉,北京

问题:
1,popedom中多个显示权地这样存在该字段内的吗
2,这个money 880是popedom中哪个城市的呢。

归纳的说,id为1的线路是湖南长沙的会员发布的(本来该线路只能在长沙线路栏目中显示),
但他通过购买手段取得在长沙,武汉,北京的城市线路栏目中都要排在其它线路的前面权力。
如何实现。
xuzuning 2005-09-29
  • 打赏
  • 举报
回复
排序项中增加 popedom='$city'一项

$city为所在地名称,比如
popedom = 长沙

在“长沙”则$city='长沙' popedom='$city'为1
在“武汉”则$city='武汉' popedom='$city'为0
liubi 2005-09-29
  • 打赏
  • 举报
回复
非常感谢 xuzuning(唠叨) 兄的回答。

还有一个问题关于第2点。
就是同一线路,可能有几个地点的排序权 如 id=1 的线路,要在长沙排第一,要在武汉排第二,要在长沙排第一,
这个如何处理。popedom字段内如何存放这些显示权的所在地。
xuzuning 2005-09-29
  • 打赏
  • 举报
回复
1,当进入长沙(当然其它城市一样处理)时,旅游线路栏目内显示所有city为长沙的线路,但花钱买的则显示在前面,其它显示在后面。
增加字段money存放所付钱数,显示时按money降序排列

2,会员也可以购买原本是长沙的线路,但在武汉的显示权,(比如说一条线路游几个城市,先长沙,再武汉,最后北京)
增加popedom字段,存放显示权所在地,显示时通过其过滤或排序

3,以上显示排序不一定都在都一位,有可能1在第一位,2由于第一位已被其它线路占了,只能排第二位了。
这是必然的,总有先来后到的嘛,况且购买时所花的费用和购买的期限也不尽相同
liubi 2005-09-29
  • 打赏
  • 举报
回复
认真看一看,帮忙分析一下。
liubi 2005-09-29
  • 打赏
  • 举报
回复
up
liubi 2005-09-29
  • 打赏
  • 举报
回复
真是对不住 唠叨 兄了。呵呵。

我可能还没有问题描述得清楚。

我是说。

8 号会员的 第1条线路 在长沙投了880 排在长沙线路栏目的第一个位置
8 号会员的 第1条线路 在武汉投了500 排在武汉线路栏目的第四个位置
..................

8 号会员的 第3条线路 在武汉投了800 排在武汉线路栏目的第二个位置
................

数据表怎么设计,共需要几个数据表,能完成以上问题。
目前已有 travelline 这里全国各国会员发布的旅游线路,
但花多少钱,有些哪些城市的排序权的数据记录,我不知是另开数据表,还是其它怎么处理。。。

xuzuning 2005-09-29
  • 打赏
  • 举报
回复
1,popedom中多个显示权地这样存在该字段内的吗
可以,不过处理起来有点麻烦

2,这个money 880是popedom中哪个城市的呢。
各自或共有
一般可看作8号会员花880在长沙,武汉,北京做广告。很正常
liubi 2005-09-29
  • 打赏
  • 举报
回复
up

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧