求 二个简单的 SQL语句

问:

"Persons" 表:
编号      LastName      FirstName        Address          City
001       Hansen        Ola              Timoteivn 10     Sandnes
002       Svendson      Tove             Borgvn 23        Sandnes
003       Pettersen     Kari             Storgt 20        Stavanger

"Orders"表:
编号      Company      OrderNumber
001       Sega         3412
001       W3School     2312
001       Trio         4678
002       W3School     6798


问题一:
我用   select * from Persons  where LastName='Hansen'
结果是:
编号      LastName      FirstName        Address          City
001       Hansen        Ola              Timoteivn 10     Sandnes
如果我想得到 下面一样的结果:

编号      LastName      FirstName        Address          City
001       Hansen        Ola              Timoteivn 10     Sandnes
001       Hansen        Ola              Timoteivn 10     Sandnes
001       Hansen        Ola              Timoteivn 10     Sandnes
001       Hansen        Ola              Timoteivn 10     Sandnes
该用什么SQL语句,谢谢。

问题二:
我们看这二个表,不难发现,Persons和Orders表是一对多的关系
那么我想用SQL语句等到下面的结果,请问该如何写SQL语句

编号   Company                 OrderNumber
001    Sega,W3School,Trio    3412,2312,4678
002    W3School                6798
003     
答:

 fachun() ( 二级(初级)) 信誉:100 2007-8-3 20:52:18 得分: 22
 
 
 

 第一个问题:
select * from Persons  where LastName='Hansen'
union all
select * from Persons  where LastName='Hansen'
union all
select * from Persons  where LastName='Hansen'
union all
select * from Persons  where LastName='Hansen'
第二个问题:
用游标


 paoluo(一天到晚游泳的鱼) ( 一星(中级)) 信誉:100 2007-8-4 8:36:21 得分: 40

--創建測試環境
Create Table Persons
(编号 Char(3),
 LastName Varchar(20),
 FirstName Varchar(20),
 Address Varchar(20),
 City Varchar(20))
Insert Persons Select '001',       'Hansen',         'Ola',               'Timoteivn 10',     'Sandnes'
Union All Select '002',       'Svendson',      'Tove',            'Borgvn 23',         'Sandnes'
Union All Select '003',       'Pettersen',       'Kari',             'Storgt 20',            'Stavanger'

Create Table Orders
(编号 Char(3),
 Company Varchar(20),
 OrderNumber Int)
Insert Orders Select '001',       'Sega',             3412
Union All Select '001',       'W3School',     2312
Union All Select '001',       'Trio',              4678
Union All Select '002',       'W3School',     6798
GO
--測試
--问题一
select * from Persons  where LastName='Hansen'
union all
select * from Persons  where LastName='Hansen'
union all
select * from Persons  where LastName='Hansen'
union all
select * from Persons  where LastName='Hansen'
GO

--問題二
--創建函數
Create Function F_Get_Orders(@编号 Char(3), @Flag Bit)
Returns Varchar(8000)
As
Begin
Declare @S Varchar(8000)
Select @S = ''
If(@Flag = 0)
Select @S = @S + ',' + Company From Orders Where 编号 = @编号
Else
Select @S = @S + ',' + Cast(OrderNumber As Varchar(100)) From Orders Where 编号 = @编号
Select @S = Stuff(@S, 1, 1, '')
Return @S
End
GO
--調用
Select 编号, dbo.F_Get_Orders(编号, 0) As Company, dbo.F_Get_Orders(编号, 1) As OrderNumber From Persons
GO
--刪除測試環境
Drop Table Persons, Orders
Drop Function F_Get_Orders
GO
--結果
/*
--问题一結果
编号LastNameFirstNameAddressCity
001HansenOlaTimoteivn 10Sandnes
001HansenOlaTimoteivn 10Sandnes
001HansenOlaTimoteivn 10Sandnes
001HansenOlaTimoteivn 10Sandnes

--问题二結果
编号CompanyOrderNumber
001Sega,W3School,Trio3412,2312,4678
002W3School6798
003NULLNULL
*/

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值