求教三个查询语句,自己研究了半天没写出来。谢谢!

u010388660 2013-04-21 10:16:10
问题一、
有表table1:
id A
1 a1
4 a4
表table2:
id B
2 b2
3 b3
所有字段都是字符型。现需要查询结果是这样子的,就是相当于按照id,把两个标的数据列(AB)重新排序:
id C
1 a1
2 b2
3 b3
4 a4
问题二、
有表table1:
id A
1 a1
2 a2
表table2:
id B
1 b1
2 b2
需要的查询结果是:
id A B
1 a1 b1
2 a2 b2
问题三,有点复杂
table1:省市两级地区有统一用id编码,用level区分省市,father指本地区所在的上级地区编号。
id level 名称 father
1 1 河北 0
2 1 山东 0
3 2 石家庄 1
4 2 济南 2
5 2 青岛 2
table2
id 姓名 省 市
1 张三 1 3
2 李四 2 4
3 王五 2 5
需要的查询结果是:
id 姓名 省 市
1 张三 河北 石家庄
2 李四 山东 济南
3 王五 山东 青岛

以上三个查询,我是新手,没写出来,请各位高手赐教啊。谢谢!
...全文
276 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sky_Cat 2013-04-24
  • 打赏
  • 举报
回复
1,select * from(select id,A as c from table1 union all select id B as C from table2) 2,select a.id,a.A,b.B from table1 a inner join table b on a.id=b.id 3,select b.id,a.名称 from table1 a left join table2 b on a.id=b.省 inner join (select b.id,a.名称 from table1 a left join table2 b on a.id=b.市) c on b.id=c.id)
pcmlose 2013-04-24
  • 打赏
  • 举报
回复
1\
select t.id,t.C from 
(
select id,A as C from table1
union all
select id,B as C from table2
) t
order by t.id
2\
select t1.id,t1.A,t2.B from table1 t1,table2 t2
where t1.id=t2.id
order by t1.id
3\
select t2.id,t2.姓名,t1sheng.名称 as 省,t1shi.名称 as 市 
from table2 t2 
join table1 t1sheng on t2.省=t1sheng.id
join table1 t1shi on t2.市=t1shi.id
习惯性蹭分 2013-04-22
  • 打赏
  • 举报
回复
引用 10 楼 u010388660 的回复:
晕死了,一直用手机发的帖子,写起来很不方便。第二次的更正(6楼)也更正错了。 重新描述一下,应该是这样的: table1:省级地区用不同id编码,同一省份下的城市id重新从1开始编码。用level区分省市。father指本地区所在的上级地区编号。 level id 名称 father 1 1 河北 0 1 2……
这样还没有刚开始设计的表合理。刚开始那样就很好了。7楼的就可以查询出来了。
24402146 2013-04-22
  • 打赏
  • 举报
回复
--创建临时表#tb1 CREATE TABLE #tb1 ( ID INT, LEVEL INT, 名称 NVARCHAR(10), FATHER INT ) --创建临时表#tb2 CREATE TABLE #tb2 ( ID INT, 姓名 NVARCHAR(10), 省 INT, 市 INT ) --插入楼主数据到临时表 INSERT INTO #tb1 SELECT 1,1,'河北',0 UNION SELECT 2,1,'山东',0 UNION SELECT 3,2,'石家庄',1 UNION SELECT 4,2,'济南',2 UNION SELECT 5,2,'青岛',2 INSERT INTO #tb2 SELECT 1,'张三',1,3 UNION SELECT 2,'李四',2,4 UNION SELECT 3,'王五',2,5 SELECT A.ID,A.姓名,B.名称 AS 省,C.名称 AS市 FROM #tb2 A LEFT JOIN #tb1 B ON A.省=B.ID LEFT JOIN #tb1 C ON A.市=C.ID 结果 1 张三 河北 石家庄 2 李四 山东 济南 3 王五 山东 青岛
24402146 2013-04-22
  • 打赏
  • 举报
回复
问题3可以参考问题2
soldierash 2013-04-21
  • 打赏
  • 举报
回复
错了,是石家庄和济南
soldierash 2013-04-21
  • 打赏
  • 举报
回复
ID怎么回事,你这样的ID,level怎么可能确定一条记录?明显不符合第二范式,你可以看看石家庄和青岛
dengixnyu 2013-04-21
  • 打赏
  • 举报
回复


--------------2
select table1.id ,table1.A,table2.B from table1  inner join  table2 on table1.id =table2.id

-------------3
select tab2.id,tab2.姓名,tab1.名称 as 省,a.名称 as 市区 from tab2  left join tab1 on tab1.id = tab2.省
left join tab1 a on a.id= tab2.市

u010388660 2013-04-21
  • 打赏
  • 举报
回复
引用 3 楼 soldierash 的回复:
问题三,table2里的市编号3,4,5是table1里的id??
不好意思,3,4,5不是talble1里的id,前面帖子里的表结构写错 应该是这样的: table1:省级地区用不同id编码,同一省份下的城市id重新从1开始编码。用level区分省市。id,level两列可唯一确定一条记录。father指本地区所在的上级地区编号。 id level 名称 father 1 1 河北 0 2 1 山东 0 1 2 石家庄 1 1 2 济南 2 2 2 青岛 2 table2 id 姓名 省 市 1 张三 1 1 2 李四 2 1 3 王五 2 2 需要的查询结果是: id 姓名 省 市 1 张三 河北 石家庄 2 李四 山东 济南 3 王五 山东 青岛
u010388660 2013-04-21
  • 打赏
  • 举报
回复
引用 3 楼 soldierash 的回复:
问题三,table2里的市编号3,4,5是table1里的id??
是的。我自己这样设计的表, 有符合查询条件的解吗?
u010388660 2013-04-21
  • 打赏
  • 举报
回复
谢谢楼上的。。 其实第二个我也写完了。但是一、三还是没写出来。谢谢你第一个问题的查询语句 。
soldierash 2013-04-21
  • 打赏
  • 举报
回复
问题三,table2里的市编号3,4,5是table1里的id??
soldierash 2013-04-21
  • 打赏
  • 举报
回复
问题二: select a.id, a.A, b.B from table1 a inner join table2 b on a.id = b.id order by a.id
soldierash 2013-04-21
  • 打赏
  • 举报
回复
问题一: select * from (select id, A as C from table1 union all select id, B as C from table2 ) a order by a.id
u010388660 2013-04-21
  • 打赏
  • 举报
回复
晕死了,一直用手机发的帖子,写起来很不方便。第二次的更正(6楼)也更正错了。 重新描述一下,应该是这样的: table1:省级地区用不同id编码,同一省份下的城市id重新从1开始编码。用level区分省市。father指本地区所在的上级地区编号。 level id 名称 father 1 1 河北 0 1 2 山东 0 2 1 石家庄 1 2 1 济南 2 2 2 青岛 2 table2 id 姓名 省 市 1 张三 1 1 2 李四 2 1 3 王五 2 2 比如找出张三所在省市名称,分两步走: 1、张三所在省代码是1,则查找level==1记录(level==1的记录全是省),则找到河北。 2、张三所在市代码是1,再从level==2的记录里寻找,会找到石家庄和济南,再比较father列,其父节点是否是张三所在省的代码1? 就会找到石家庄了。 我已经写出代码了,分别用了两个临时表。两个临时表查出来的结果一直只有省,一个只有市,然后再通过我问的第二个问题,再写一个查询就出来了。可是实在是太麻烦了! 各位大侠是否有好的方法?非常感谢! 上面说错了,不是id和level唯一确定一个城市 需要的查询结果是: id 姓名 省 市 1 张三 河北 石家庄

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧