当前位置:编程学习 > C#/ASP.NET >>

急,查询3张表,去掉某张表的字段不重复,怎么查询

假如有 A,B,C3张表
  A:书号 书名 出版社 价格
  B:出版社 出版日期
  C:书名  库存

现在我想查询这样条记录---书号不重复的记录

我是这样写的
  select distinct 书号,书名,出版社,价格,出版日期,库存 from A,B,C where A.书名=C.书名 and A.出版社=B.出版社
测试下来根本没有去掉书名重复的这样的记录。、

本人新手,求高手给点解答. --------------------编程问答-------------------- 书名重复时取最小ID.
try->
select id=identity(int,1,1),书号,书名,出版社,价格,出版日期,库存 into # from A,B,C where A.书名=C.书名 and A.出版社=B.出版社 
select * from #  t where not exists(select 1 from # where 书名=t.书名 and id<t.id)
--------------------编程问答--------------------   汗。。。 --------------------编程问答-------------------- group by 书名  
这个行不。。。 --------------------编程问答-------------------- 可以写下SQL语句么 --------------------编程问答-------------------- group by 什么啊 --------------------编程问答-------------------- 應該是你的A表本來就有 書號不同,書名相同的記錄。
而你又要顯示書號,自然會重復了 --------------------编程问答-------------------- select a.书号,a.书名,a.出版社,a.价格,c.库存,b.出版日期 from A as a,B as b,C as c where a.书号 in (select A.书号 from A,C where A.书名=B.书名 group by A.书号) and A.书号=C.书号 and A.出版社=B.出版社


试试吧,应该可以 --------------------编程问答-------------------- 我认为你的表建的就有问题,比如说书号1的出版社是a,书号2的出版社也是a,那么在B表中就有两条记录,那么那么这两个表连接的时候 就会产生四条记录。。。,所以是B表和c表,的唯一性不能确定,一种方法是将三个表和为一个表,或是在B和C表加一个书号的列,确保唯一 --------------------编程问答-------------------- select distinct a.书号 from A a 
left join B b ON a.出版社=b.出版社
left join C c ON a.书名=b.书名 --------------------编程问答-------------------- 不好意思,改改

select distinct a.书号 from A a 
left join B b ON a.出版社=b.出版社 
left join C c ON a.书名=c.书名 --------------------编程问答-------------------- select A.书号,A.书名,A.出版社,A.价格,C.库存,B.出版日期 from A left join C on A.书号 = C.书号 left join B on A.出版社 = B.出版社 group by A.书号
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,