高分求个SQL,这个用Group by该怎么弄呀?
表1
id filename pid
1 aa 3
2 aa 2
3 bb 1
表2
id filename
1 bb
2 aa
3 aa
4 aa
现在要查出表2中 id=pid的项目该如何写SQL
如这样的结果,注意排序是按表1的id
id filename
1 aa
2 bb
问题点数:100、回复次数:9Top
1 楼zjcxc(邹建)回复于 2006-03-15 20:55:50 得分 20
select b.*
from ta, a, tb b
whee b.id=a.pid
order by a.idTop
2 楼scmail81(琳·风の狼(修罗))回复于 2006-03-15 20:56:37 得分 15
!!??
select 表2.filename
from
表1,表2
where
表1.pid=表2.id
order by 表1.idTop
3 楼xeqtr1982(Visual C# .NET)回复于 2006-03-15 20:58:17 得分 5
同意老大.可是楼主给的结果不知道怎么查询出来Top
4 楼wangtiecheng(不知不为过,不学就是错!)回复于 2006-03-15 21:07:50 得分 20
create table #t1(id int,filename varchar(100), pid int)
create table #t2(id int,filename varchar(100))
insert into #t1(id,filename,pid)
select 1,'aa',3 union all
select 2,'aa',2 union all
select 3,'bb',1
insert into #t2(id,filename)
select 1,'bb' union all
select 2,'aa' union all
select 3,'aa' union all
select 4,'aa'
select * from #t1 select * from #t2
select b.* from #t1 a inner join #t2 b on a.pid=b.id order by a.id
drop table #t1,#t2
Top
5 楼phckt(泡壶茶)回复于 2006-03-15 21:39:55 得分 0
用zjcxc(邹建)
select b.*
from ta, a, tb b
whee b.id=a.pid
order by a.id
的方法查询出来的结果是
id filename
3 aa
2 aa
1 bb
可能我没说清楚吧, 最终是要按filename group by的,不过表2还有很多其它项目要输出,一直找不到一个好的方法.
Top
6 楼zjdyzwx(十一月猪)回复于 2006-03-16 08:23:35 得分 20
DECLARE @T1 TABLE(ID INT , FILENAME VARCHAR(2), PID INT)
DECLARE @T2 TABLE(ID INT , FILENAME VARCHAR(2))
INSERT INTO @T1
SELECT 1, 'aa', 3 UNION ALL
SELECT 2, 'aa', 2 UNION ALL
SELECT 3, 'bb', 1
INSERT INTO @T2
SELECT 1, 'bb' UNION ALL
SELECT 2, 'aa' UNION ALL
SELECT 3, 'aa' UNION ALL
SELECT 4, 'aa'
SELECT MIN(A.ID) AS ID ,A.FILENAME FROM @T1 AS A
INNER JOIN @T2 AS B ON A.PID = B.ID
GROUP BY A.FILENAMETop
7 楼phckt(泡壶茶)回复于 2006-03-16 13:24:05 得分 0
谢谢大家,用了个笨办法,终于解决了分组和排序的问题.分有点多, 来者有份.Top
8 楼Oliko(实习菜)回复于 2006-03-16 14:19:44 得分 20
--楼主数据没有说明清楚呢,结果中的2怎么会对应bb?是重新生成的ID?
create table #t1(Fid int,Fname varchar(20),Pid int)
insert into #T1 values(1,'aa',3)
insert into #T1 values(2,'aa',2)
insert into #T1 values(3,'bb',1)
create table #t2(Fid int,Fname varchar(20) )
insert into #T2 values(1,'bb')
insert into #T2 values(2,'aa')
insert into #T2 values(3,'aa')
insert into #T2 values(4,'aa')
create table #T3 ( Fid int IDENTITY(1,1),Fname varchar(20))
insert into #t3 (Fname) select distinct Fname from #t1 a where a.Pid in (select Fid from #t2)
select * from #t3
drop table #t1
drop table #t2
drop table #t3
Top
9 楼Oliko(实习菜)回复于 2006-03-16 14:22:45 得分 0
忘了把执行结果贴出来,补上
第一个表数据
Fid Fname Pid
----------- -------------------- -----------
1 aa 3
2 aa 2
3 bb 1
第二个表数据
Fid Fname
----------- --------------------
1 bb
2 aa
3 aa
4 aa
结果:
Fid Fname
----------- --------------------
1 aa
2 bb
Top




