100分问题!!关于查询语句。

hanyulou2003 2004-08-11 03:39:07
7. 表Tbl_Main的数据如下:
idM MainCode MainName Flag
1 001 动物 0
2 002 植物 0
3 003 新闻 1
4 004 交通工具 2
5 005 通信工具 2
表Tbl_Sub的数据如下:
idS MainCode SubName
1 001 猫
2 001 狗
3 003 国际新闻
4 004 自行车
5 004 汽车
现在,要选出如下的结果,请写出正确的SQL语句:
idM MainCode MainName SubName
1 001 动物 猫
1 001 动物 狗
2 002 植物
3 003 新闻 国际新闻
4 004 交通工具 自行车
4 004 交通工具 汽车
5 005 通信工具
8.第7题表Tbl_Main中,若要选出如下结果,请写出正确的SQL语句:
idM MainCode MainName Flag
1 001 动物 0
3 003 新闻 1
4 004 交通工具 2
9.第7题表Tbl_Sub中,若要选出如下结果(表Tbl_Main不知),请写出正确的SQL语句:
idS MainClass SunName
1 动物 猫
2 动物 狗
3 新闻 国际新闻
4 交通工具 自行车
5 交通工具 汽车
10.判断数据库中是否存在表Tbl_MainA,如不存在,则创建此表,如数据库中已经存在此表,则全部删除该表中数据。并将第7题中的选取结果写入此表。

...全文
175 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
hanyulou2003 2004-08-12
  • 打赏
  • 举报
回复
sankis,你的思路太复杂了,实际中可能用到。但,现在是考试阿。
rouqu 2004-08-12
  • 打赏
  • 举报
回复
10.判断数据库中是否存在表Tbl_MainA,如不存在,则创建此表,如数据库中已经存在此表,则全部删除该表中数据。
if exists(select name from sysobjects where xtype = 'u' and status >= 0 and name = Tbl_MainA) truncate table tablename
else create table tablename(...)
go
insert into tablename
select * from ...
sankis 2004-08-12
  • 打赏
  • 举报
回复
你没看到你的问题吗?
flag = 0 and 1的时候插入一次
flag > 1的时候跟据数的值的大小来插入的。
应该可以有没用插时表的办法,
但这是我的思路,你可以想好的办法啊。
sankis 2004-08-12
  • 打赏
  • 举报
回复
create talbe #ls (idm int, flag int) --建立要查询的临时表
CREATE TALBE #t (idM int,MainCode varchar(10),MainName varchar(50),SubName varchar(50))
Insert #ls (idm, flag) Select idm, flag From Tbl_Main --在临时表中放入id
Declare @Min int, @max int, @flag int, @min1 int
select @min = min(idm), @max = Max(idm) From #ls
While @min <= @max --在临时表中最大最小id之间做循环
begin
Select @flag = flag From #ls where idm = @min --取出flag的值
set @min1 = 1
while @min1 <= @flag --从1开始循环到flag的值,插入到#t表中
begin
Insert #t (idM,MainCode,MainName) Select idM,MainCode,MainName From
Tbl_Main Where idm = @min1
Set @min1 = @min1 + 1
end
set @min = @min + 1
end
Insert #t (idM,MainCode,MainName) Select idM,MainCode,MainName From
Tbl_Main Where flag = 0
Update #t set SubName = a.SubName From Tbl_Sub a, #t b Where a.MainCode=b.MainCode
Select * From #t
drop talbe #t, #ls
sankis 2004-08-12
  • 打赏
  • 举报
回复
我写的有点问题
hanyulou2003 2004-08-12
  • 打赏
  • 举报
回复
还有,非要用临时表么?
hanyulou2003 2004-08-12
  • 打赏
  • 举报
回复
兄弟,能不能不要管flag,我看着有点晕啊。
sankis 2004-08-12
  • 打赏
  • 举报
回复
你为什么要记下来??

理解不是更好吗?

理解后还可以想自己的解决办法,死记硬背是不行的。
sankis 2004-08-12
  • 打赏
  • 举报
回复
create talbe #ls (idm int, flag int) --建立要查询的临时表
CREATE TALBE #t (idM int,MainCode varchar(10),MainName varchar(50),SubName varchar(50))
Insert #ls (idm, flag) Select idm, flag From Tbl_Main --在临时表中放入id
Declare @Min int, @max int, @flag int, @min1 int
select @min = min(idm), @max = Max(idm) From #ls
While @min <= @max --在临时表中最大最小id之间做循环
begin
Select @flag = flag From #ls where idm = @min --取出flag的值
set @min1 = 0
while @min1 <= @flag --从0开始循环到flag的值,插入到#t表中
begin
Insert #t (idM,MainCode,MainName) Select idM,MainCode,MainName From
Tbl_Main Where idm = @min1
Set @min1 = @min1 + 1
end
set @min = @min + 1
end
Update #t set SubName = a.SubName From Tbl_Sub a, #t b Where a.MainCode=b.MainCode
Select * From #t
drop talbe #t, #ls
OK?
sankis 2004-08-12
  • 打赏
  • 举报
回复
create talbe #ls (idm int, flag int) --建立要查询的临时表
CREATE TALBE #t (idM int,MainCode varchar(10),MainName varchar(50),SubName varchar(50))
Insert #ls (idm, flag) Select idm, flag From Tbl_Main --在临时表中放入id
Declare @Min int, @max int, @flag int, @min1 int
select @min = min(idm), @max = Max(idm) From #ls
While @min <= @max --在临时表中最大最小id之间做循环
begin
Select @flag = flag From #ls where idm = @min --取出flag的值
set @min1 = 0
while @min1 <= @flag --从0开始循环到flag的值,插入到#t表中
begin
Insert #t (idM,MainCode,MainName) Select idM,MainCode,MainName From
Tbl_Main Where idm = @min1
Set @min1 = @min1 + 1
end
set @min = @min + 1
end
Update #t set SubName = a.SubName From Tbl_Sub a, t b Where a.MainCode=b.MainCode
Select * From #t
drop talbe #t, #ls
OK?
hanyulou2003 2004-08-12
  • 打赏
  • 举报
回复
sankis,拜托,简单点。复杂得我也记不住阿,最好不用声明。
sankis 2004-08-11
  • 打赏
  • 举报
回复
那我的方法可能麻烦了点,但是flag的值多大都没问题。
hanyulou2003 2004-08-11
  • 打赏
  • 举报
回复
你们回答的a 是什么?
hanyulou2003 2004-08-11
  • 打赏
  • 举报
回复
不可能是100
考试题。
马前小卒 2004-08-11
  • 打赏
  • 举报
回复
up
Frewin 2004-08-11
  • 打赏
  • 举报
回复
9.
Select idS, a.MainName as MainClass, SunName From Tbl_Sub b MainCode a
where b.MainCode = a.MainCode
Frewin 2004-08-11
  • 打赏
  • 举报
回复
8.
Select a.* From Tbl_Main a Where MainCode In(Select Distinct MainCode From Tbl_Sub)
sankis 2004-08-11
  • 打赏
  • 举报
回复
楼主要是你的Tbl_Main表中的flag字段是100呢??
sankis 2004-08-11
  • 打赏
  • 举报
回复
create talbe ls (idm int, flag int)
CREATE TALBE t (idM int,MainCode varchar(10),MainName varchar(50),SubName varchar(50))
Insert ls (idm, flag) Select idm, flag From Tbl_Main
Declare @Min int, @max int, @flag int, @min1 int
select @min = min(idm), @max = Max(idm) From ls
While @min <= @max
begin
Select @flag = flag From ls where idm = @min
set @min1 = 0
while @min1 <= @flag
begin
Insert t (idM,MainCode,MainName) Select idM,MainCode,MainName From
Tbl_Main Where idm = @min1
Set @min1 = @min1 + 1
end
set @min = @min + 1
end
Update t set SubName = a.SubName From Tbl_Sub a, t b Where a.MainCode=b.MainCode
Select * From t
这是第7
Frewin 2004-08-11
  • 打赏
  • 举报
回复
7.
Select a.idM ,a.MainCode,a.MainName,b.SubName From Tbl_Main a Left Join Tbl_Sub On a.MainCode=b.MainCode
加载更多回复(5)

34,576

社区成员

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

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