作者pkwbim (多采多姿)
看板Database
标题[SQL ] 找出每个群组中的一笔资料
时间Thu Oct 9 21:11:22 2008
小弟在做案子时遇到的情况,
虽然用了笨方法解决掉了,但是仍觉得应该有更好的手法来解这问题,
问题是这样的,有两张表,一张是存群组资料,一张是存项目资料
categories items
=============== ===========================
category_name category_name | item_name
=============== ===========================
A A | a1
B B | b1
C A | a2
D C | c1
=============== B | b2
C | c2
C | c3
============================
现在,我希望只下一个 SQL (使用的是 PostgreSQL 8.1)指令,
就可以拿到每个群组的一个(也只有一个) item
如
==========================
category_name | item_name
==========================
A | a1
B | b1
C | c1
==========================
我现在的做法是取得群组後,对每个群组再下一个 SQL 指令来取得该群组的 item
不知道有没有只要下一个 SQL 句子的做法
--
政治是高明的骗术
化妆是高明的易容术
有了Photoshop就不用SK II
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.132.38.129
※ 编辑: pkwbim 来自: 220.132.38.129 (10/09 21:18)
※ 编辑: pkwbim 来自: 220.132.38.129 (10/09 21:19)
1F:推 matchyou:做得到阿 问题在於你要哪个ITEM出现 为何A群组出现的ITEM 10/09 23:24
2F:推 matchyou:是a1而不是a2 10/09 23:25
3F:→ pkwbim:其实原本是要取得每个群组的第一笔(id最小) 10/10 11:46
4F:→ pkwbim:只是我连随便取值都做不出来.... 10/10 12:54
5F:推 grence:看起来只需要group by…每次都要取随机还比较麻烦咧XD 10/10 22:20
6F:推 softwind:DISTINCT SELECT from categories nature join items 10/11 00:48
7F:推 bopomofo:说真的喔,这题用 SQL 无解,可以考虑用函数,例如 10/12 18:08
8F:推 bopomofo:SELECT category_name, getItem(catID) FROM categories 10/12 18:15