佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

搜索
查看: 1237|回复: 6

每个SubSection拿一个record

[复制链接]
发表于 1-11-2007 12:43 PM | 显示全部楼层 |阅读模式
sql =

  1. SELECT loccon.ID AS ID, locpro.ID as locproID, locsec.ID as locsecID, locsec.sectionName AS locsecName, loccon.content AS content, loccon.rating AS rating, user.ID AS userID, user.username AS username, type.ID AS typeID, type.typeName AS typeName
  2. FROM live_locationprofile locpro, live_locationsubsection locsec, live_locationcontent loccon, live_user user, live_usertype type
  3. WHERE locpro.ID = loccon.locproID AND locsec.ID = loccon.subsectionID AND user.ID = loccon.userID AND user.typeID = type.ID AND locpro.ID = 1
  4. GROUP BY locsec.ID, loccon.rating
  5. ORDER BY loccon.rating DESC
复制代码
如果我要从live_locationcontent里面拿出每个subsection内最高分(rating)的record,我应该怎么写?

我试过这个,但是只是拿到里面最高分的entry,而不是每个subsection一个
  1. SELECT loccon.ID AS ID, locpro.ID as locproID, locsec.ID as locsecID, locsec.sectionName AS locsecName, loccon.content AS content, loccon.rating AS rating, user.ID AS userID, user.username AS username, type.ID AS typeID, type.typeName AS typeName
  2. FROM live_locationprofile locpro, live_locationsubsection locsec, live_locationcontent loccon, live_user user, live_usertype type
  3. WHERE locpro.ID = loccon.locproID AND locsec.ID = loccon.subsectionID AND user.ID = loccon.userID AND user.typeID = type.ID AND locpro.ID = 1 GROUP BY locsec.ID
  4. HAVING MAX(loccon.rating)
复制代码
我的table definition基本上就在sql里面

[ 本帖最后由 V4ndrake 于 2-11-2007 03:54 AM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

发表于 1-11-2007 09:37 PM | 显示全部楼层
很亂,下次簡化點,看到很累

你的意思是live_locationcontent 拿每個 loccon.ID最高的rating 出來是嗎?

如果是的話,用subquery可以解決你的問題
簡化你的table下,回復你

select loccon.ID as ID, lopro.ID as locrpoID, loccon.content as content,
(select max(b.rating) from live_locationcontent b where loccon.ID=b.ID) as Rating
from live_locationcontent ,live_locationprofile locpro
where locpro.ID = loccon.locproI

不曉得這個是不是你問的問題


回复

使用道具 举报

 楼主| 发表于 2-11-2007 03:52 AM | 显示全部楼层
首先要Group我的loccon table里面的entry,以loccon.sectionID来group

然后在排列好的result entries里面,每个sectionID的组中,挑出最高rating的

好像有点晕~

看来真的非得要做subquery不可了

[ 本帖最后由 V4ndrake 于 2-11-2007 03:54 AM 编辑 ]
回复

使用道具 举报

发表于 2-11-2007 09:38 AM | 显示全部楼层
sectionID != loccon.ID ?
方法類似我給你的例子,你可以參考
回复

使用道具 举报

 楼主| 发表于 2-11-2007 01:41 PM | 显示全部楼层
不晓得,我还没时间试

要简化的话,就只是query 一个table(我笨到忘记了简化,真抱歉)


  1. SELECT ID, content, rating, ranking, subsectionID, locproID
  2. FROM live_locationcontent
  3. WHERE locproID = 1
  4. GROUP BY subsectionID
  5. HAVING MAX(rating)
复制代码


可是只是有最高rating的record
我要的是每个subsection里面抽一个最高rating的
所以应该是要nested query了对不对?
回复

使用道具 举报

发表于 2-11-2007 03:18 PM | 显示全部楼层
照你的寫法,是要拿出最高的rating罷了

你到底是要每個SubSectionID 中,拿出最高rating 還是什麽??
SubSectionIDRating
1
95
1
50
2
45
2
90


得出
SubSectionIDRating
1
95
2
90


如果是的話,你照#2 寫法subquery 的方式
回复

使用道具 举报

Follow Us
 楼主| 发表于 2-11-2007 10:25 PM | 显示全部楼层
原帖由 kristy 于 2-11-2007 03:18 PM 发表
照你的寫法,是要拿出最高的rating罷了

你到底是要每個SubSectionID 中,拿出最高rating 還是什麽??
SubSectionIDRating
1
95
1
50
2
45
2
90


得出
SubSectionIDRating
1
95
2
...


就是这样,谢谢你~
回复

使用道具 举报

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

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2026 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 30-3-2026 07:40 AM , Processed in 0.082317 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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