标题:[求助]这样的查询怎么写sql语句?
只看楼主
自由震魂曲
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2006-3-10
得分:0 
...对不起呀.楼上有写了...

2006-03-24 14:09
LouisXIV
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:789
专家分:0
注 册:2006-1-5
得分:0 
只要年龄的话这样就可以了嘛。。。
select min(年龄) as 年龄,班级
from stu
group by 班级

如果要全部资料都要,并且只取一个同班同龄中的一个的话最不用脑子的方法就是调用游标了。

2006-03-24 20:24
islet
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:89
帖 子:6548
专家分:0
注 册:2005-1-28
得分:0 

这样只能两条sql次数据库做到显示班级 年龄 按班级ID读下一页

2006-03-25 07:53
Tailor
Rank: 1
等 级:新手上路
帖 子:152
专家分:0
注 册:2005-6-26
得分:0 

一个班中不可能年龄最小的只有一个,所以不能说找出年龄最小的一个。


2006-03-25 08:38
LouisXIV
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:789
专家分:0
注 册:2006-1-5
得分:0 

declare @classcd int
declare classcd cursor for
select distinct 班级 from stu
CREATE TABLE #temp
(
[学号] [int] NULL ,
[姓名] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[年龄] [int] NULL ,
[班级] [int] NULL
) ON [PRIMARY]
OPEN classcd
FETCH NEXT FROM classcd INTO @classcd
WHILE @@FETCH_STATUS=0
BEGIN
INSERT INTO #temp
(学号, 姓名, 年龄,班级)
SELECT TOP 1 学号, 姓名, 年龄,班级
FROM stu
WHERE 班级=@classcd
ORDER BY 年龄
FETCH NEXT FROM classcd INTO @classcd
END
CLOSE classcd
DEALLOCATE classcd

SELECT *
FROM #temp

用游标写了一个凑合吧。把这个做个存储过程来用好了,就是ASP能不能调用SQL的SP我不太清楚(其实我自己也想调,最好还是带形参的那种)


2006-03-25 08:55
wsn
Rank: 2
等 级:新手上路
威 望:5
帖 子:321
专家分:0
注 册:2006-2-9
得分:0 

-数据表
id name nl class
1 WSN 25 COM
2 LAIJIE 27 ART
3 L3C 24 ART
4 BB 28 COM
5 RGB 23 COM
6 OTHER 29 ART

用这条就可以实现
select * from class where nl in (
select min(nl) from CLASS group by class)



已婚男人!没事请勿打扰·老婆格言:①不准對她耍酷 ②不准讓她吃醋 ③吵架我要讓步 ④揍我我要挺住⊙⊙
2006-03-25 10:55
islet
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:89
帖 子:6548
专家分:0
注 册:2005-1-28
得分:0 
谢谢大家帮忙 其实实际应用的比我举的例子要复杂

是这样的
表:ppp
字段 id,lei,lei_id,cp,cp_id,price,price_id
描述id号,类,类编号,产品名,产品编号,价格,报价编号
同一产品可能由若干个人报价
我要一条语句查:lei,cp,cp_id,price
要求每个产品只要价格最低的 不重复

请大家再牺牲点脑细胞,帮忙看看能实现不
2006-03-25 11:19
LouisXIV
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:789
专家分:0
注 册:2006-1-5
得分:0 
以下是引用wsn在2006-3-25 10:55:00的发言:

-数据表
id name nl class
1 WSN 25 COM
2 LAIJIE 27 ART
3 L3C 24 ART
4 BB 28 COM
5 RGB 23 COM
6 OTHER 29 ART

用这条就可以实现
select * from class where nl in (
select min(nl) from CLASS group by class)


你拿这组数据试试
-数据表
id name nl class
1 WSN 25 COM
2 LAIJIE 27 ART
3 L3C 26 ART
4 BB 25 COM
5 RGB 26 COM
6 OTHER 29 ART

写SQL语句不是为了写而写的,结果的正确性是很重要的,执行成功,结果出来,并不代表完工了。

以下是引用islet在2006-3-25 11:19:00的发言:
谢谢大家帮忙 其实实际应用的比我举的例子要复杂

是这样的
表:ppp
字段 id,lei,lei_id,cp,cp_id,price,price_id
描述id号,类,类编号,产品名,产品编号,价格,报价编号
同一产品可能由若干个人报价
我要一条语句查:lei,cp,cp_id,price
要求每个产品只要价格最低的 不重复

请大家再牺牲点脑细胞,帮忙看看能实现不

想先确认一个字段定义的问题。
在这个表下面不同类下的产品,产品编号是否可以重复
比如是
.........leiid ....cp...........cpid..............
1 aa 1
1 ab 2
2 bb 3
.........
还是
.........leiid ....cp...........cpid..............
1 aa 1
1 ab 2
2 bb 1
2 bc 2
..............

[此贴子已经被作者于2006-3-25 11:51:27编辑过]


2006-03-25 11:47
islet
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:89
帖 子:6548
专家分:0
注 册:2005-1-28
得分:0 
其实这个不是表 已经是几个表合成的视图了

产品编号可以重复
唯一不重复的就是id(也就是price的编号)

[QUOTE]写SQL语句不是为了写而写的,结果的正确性是很重要的,执行成功,结果出来,并不代表完工了。[/QUOTE]

不错
我能出来结果 就是靠先读cp_id 再按cp_id去找其他需要的东西 效率太低 我想能一条语句就出来
2006-03-25 12:08
LouisXIV
Rank: 6Rank: 6
等 级:贵宾
威 望:25
帖 子:789
专家分:0
注 册:2006-1-5
得分:0 
表里的id和price_id都可以作为唯一标识?

让我想想,应该是可以(不过很麻烦就是了),不过现在在公司里,没办法建表测试,光想怕写错了。回家建个表试了在给你答复。

顺便问一下,ASP能不能调用存储过程的运算结果(或者说你会不会调用),能调用的话写个存储过程就解决了,能省下不少脑细胞。不然的话,一句select抽出结果比较头大。

2006-03-25 12:17



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-52276-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.089284 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved