大乌龟,进来领赏

lucky 2008-04-15 11:31:54
大乌龟,偶发个帖送几分给你吧,哈哈
问你个问题,公交查询系统的数据库应该如何建?要求按站点查询,从一个站做到另一个站。呵呵
偶是一张表存储线路的信息,如某某路,起点站,第二站...........终点站~~~~
...全文
218 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
lucky 2008-04-18
  • 打赏
  • 举报
回复
结帖啦,散完了,后面的不好意思,没分了。。。。呵呵
dawugui 2008-04-16
  • 打赏
  • 举报
回复
--列车车次信息数据表
CREATE TABLE tb(col varchar(100))
INSERT tb SELECT '1434/1/2/14'
UNION ALL SELECT '"10653(85707)"'
UNION ALL SELECT '"32608/7(83212/1)"'
UNION ALL SELECT '"50057()"'
UNION ALL SELECT '"T888(备)"'
UNION ALL SELECT '"21058(81404/3)0"'
UNION ALL SELECT '"22028(80404.10264)"'
UNION ALL SELECT '20037(80303.84006/9)'
UNION ALL SELECT '24031(80410/9'
UNION ALL SELECT '24048(80904)(23118)'
UNION ALL SELECT '22080(80406.83080.10284)'
UNION ALL SELECT '0031(5632 5629. 1434/1/2/14)'
CREATE FUNCTION dbo.f_CompSTR(
@str varchar(8000), --包含车次的字符串
@find varchar(50) --要查询的值
)RETURNS bit
AS
BEGIN
IF @str=@find RETURN(1)
IF LEN(@str)<LEN(@find) RETURN(0)

--替换掉车次字符串中的无效数据
SELECT @str=REPLACE(@str,a,b)
FROM(--采用表集的处理方法,是为了方便以后扩充处理其他无效数据
SELECT a='"',b='')a

--统计数据分隔符
SELECT @str=REPLACE(@str,a,b)
FROM(
SELECT a='(',b='\' UNION ALL
SELECT a=')',b='\' UNION ALL
SELECT a='(',b='\' UNION ALL
SELECT a=')',b='\' UNION ALL
SELECT a=' ',b='\' UNION ALL
SELECT a=' ',b='\' UNION ALL
SELECT a='.',b='\' UNION ALL
SELECT a='.',b='\')a

--分拆比较处理
DECLARE @s1 varchar(8000),@h varchar(100),@s varchar(100),@l int
WHILE @str>''
BEGIN
SELECT @s1=LEFT(@str,CHARINDEX('\',@str+'\')-1),
@str=STUFF(@str,1,CHARINDEX('\',@str+'\'),''),
@h=LEFT(@s1,CHARINDEX('/',@s1+'/')-1),
@l=LEN(@h)+1
IF @h=@find RETURN(1)
WHILE CHARINDEX('/',@s1+'/')>0
BEGIN
SELECT @s=LEFT(@s1,CHARINDEX('/',@s1+'/')-1),
@s1=STUFF(@s1,1,CHARINDEX('/',@s1+'/'),'')
IF LEN(@s)<@l
SET @s=STUFF(@h,@l-LEN(@s),8000,@s)
IF @find=CASE
WHEN LEN(@s)<@l THEN STUFF(@h,@l-LEN(@s),8000,@s)
ELSE @S END
RETURN(1)
END
END
RETURN(0)
END
GO

--调用上述函数查询包含车次1434的记录
SELECT * FROM tb WHERE dbo. f_CompSTR(col,’143’)=1
dawugui 2008-04-16
  • 打赏
  • 举报
回复
我给你邹老大的东西,自己研究吧.

--最短乘车路线查询示例(邹老大的。)
CREATE TABLE T_Line(
ID nvarchar(10), --公交线路号
Station nvarchar(10), --站点名称
Orders int) --行车方向(通过它反应每个站的上一个、下一个站)
INSERT T_Line
SELECT N'8路' ,N'站A',1 UNION ALL
SELECT N'8路' ,N'站B',2 UNION ALL
SELECT N'8路' ,N'站C',3 UNION ALL
SELECT N'8路' ,N'站D',4 UNION ALL
SELECT N'8路' ,N'站J',5 UNION ALL
SELECT N'8路' ,N'站L',6 UNION ALL
SELECT N'8路' ,N'站M',7 UNION ALL
SELECT N'20路' ,N'站G',1 UNION ALL
SELECT N'20路' ,N'站H',2 UNION ALL
SELECT N'20路' ,N'站I',3 UNION ALL
SELECT N'20路' ,N'站J',4 UNION ALL
SELECT N'20路' ,N'站L',5 UNION ALL
SELECT N'20路' ,N'站M',6 UNION ALL
SELECT N'255路',N'站N',1 UNION ALL
SELECT N'255路',N'站O',2 UNION ALL
SELECT N'255路',N'站P',3 UNION ALL
SELECT N'255路',N'站Q',4 UNION ALL
SELECT N'255路',N'站J',5 UNION ALL
SELECT N'255路',N'站D',6 UNION ALL
SELECT N'255路',N'站E',7 UNION ALL
SELECT N'255路',N'站F',8
GO

--乘车线路查询存储过程
CREATE PROC p_qry
@Station_Start nvarchar(10),
@Station_Stop nvarchar(10)
AS
SET NOCOUNT ON
DECLARE @l int
SET @l=0
SELECT ID,Station,
Line=CAST('('+RTRIM(ID)+': '+RTRIM(Station) as nvarchar(4000)),
Orders=Orders,
[Level]=@l
INTO # FROM T_Line
WHERE Station=@Station_Start
WHILE @@ROWCOUNT>0
AND NOT EXISTS(SELECT * FROM # WHERE Station=@Station_Stop)
BEGIN
SET @l=@l+1
INSERT #(Line,ID,Station,Orders,[Level])
SELECT
Line=a.Line+CASE
WHEN a.ID=b.ID THEN N'->'+RTRIM(b.Station)
ELSE N') ∝ ('+RTRIM(b.ID)
+N': '+RTRIM(b.Station) END,
b.ID,b.Station,b.Orders,@l
FROM # a,T_Line b
WHERE a.[Level]=@l-1
AND(a.Station=b.Station AND a.ID<>b.ID
OR a.ID=b.ID AND(
a.Orders=b.Orders+1
OR
a.Orders=b.Orders-1))
AND LEN(a.Line)<4000
AND PATINDEX('%[ >]'+b.Station+'[-)]%',a.Line)=0
END
SELECT N'起点站'=@Station_Start
,N'终点站'=@Station_Stop
,N'乘车线路'=Line+N')'
FROM #
WHERE [Level]=@l
AND Station=@Station_Stop
IF @@ROWCOUNT =0 --如果未有可以到达的线路,则显示处理结果表备查
SELECT * FROM #
GO

--调用
EXEC p_qry N'站A',N'站L'
/*--结果
起点站 终点站 乘车线路
---------- ------------ -----------------------------------------------------------
站A 站L (8路: 站A->站B->站C->站D->站J->站L)
--*/
dawugui 2008-04-16
  • 打赏
  • 举报
回复
QQ上不是说过了?
dawugui 2008-04-16
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 liangCK 的回复:]
引用 21 楼 being21 的回复:
引用 15 楼 dawugui 的回复:
引用 5 楼 qys2000 的回复:
乌龟成了红人啦,去年才两颗星的

去年年初一星,年底四星.

目前还差5600分到五星.


卓越!!!


严重打击这种以谣民为首的卖广告行为。
[/Quote]
滚.
liangCK 2008-04-16
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 being21 的回复:]
引用 15 楼 dawugui 的回复:
引用 5 楼 qys2000 的回复:
乌龟成了红人啦,去年才两颗星的

去年年初一星,年底四星.

目前还差5600分到五星.


卓越!!!
[/Quote]

严重打击这种以谣民为首的卖广告行为。
being21 2008-04-16
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 dawugui 的回复:]
引用 5 楼 qys2000 的回复:
乌龟成了红人啦,去年才两颗星的

去年年初一星,年底四星.

目前还差5600分到五星.
[/Quote]

卓越!!!
dawugui 2008-04-16
  • 打赏
  • 举报
回复
NND,六月飞雪,冤得很啊.
2u+ 2008-04-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 liangCK 的回复:]
严重打击这种以老乌龟为首的倒分,卖分,送分行为。
[/Quote]
yms_wangxm 2008-04-16
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 utpcb 的回复:]
引用 9 楼 liangCK 的回复:
引用 8 楼 pt1314917 的回复:


好好打赏小龟子



严重打击这种以老乌龟为首的倒分,卖分,送分行为。

哈哈是的支持抵制! 号召全体 CSND 友一起抵制
[/Quote]
jhonlonehou 2008-04-16
  • 打赏
  • 举报
回复
支持乌龟,多劳多得,捞点分是应该滴
pt1314917 2008-04-16
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 dawugui 的回复:]
引用 6 楼 sdhylj 的回复:
引用 1 楼 dawugui 的回复:
QQ上不是说过了?
这是专门送分的.

你在这里先问,没看到.
石头通过QQ联系我,在QQ上又问.

后来才看到这里也有个这样的帖.
[/Quote]

解释就是掩饰。。哈哈
dawugui 2008-04-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 qys2000 的回复:]
乌龟成了红人啦,去年才两颗星的
[/Quote]
去年年初一星,年底四星.

目前还差5600分到五星.
liangCK 2008-04-16
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 dawugui 的回复:]
引用 6 楼 sdhylj 的回复:
引用 1 楼 dawugui 的回复:
QQ上不是说过了?
这是专门送分的.

你在这里先问,没看到.
石头通过QQ联系我,在QQ上又问.

后来才看到这里也有个这样的帖.
[/Quote]

严重打击这种以老乌龟为首的倒分,卖分,送分行为。
dawugui 2008-04-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 sdhylj 的回复:]
引用 1 楼 dawugui 的回复:
QQ上不是说过了?
这是专门送分的.
[/Quote]
你在这里先问,没看到.
石头通过QQ联系我,在QQ上又问.

后来才看到这里也有个这样的帖.
-狙击手- 2008-04-16
  • 打赏
  • 举报
回复
呵呵
utpcb 2008-04-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 liangCK 的回复:]
引用 8 楼 pt1314917 的回复:


好好打赏小龟子
[/Quote]


严重打击这种以老乌龟为首的倒分,卖分,送分行为。

哈哈是的支持抵制! 号召全体 CSND 友一起抵制
liangCK 2008-04-16
  • 打赏
  • 举报
回复
严重打击这种以老乌龟为首的倒分,卖分,送分行为。
liangCK 2008-04-16
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 pt1314917 的回复:]


好好打赏小龟子
[/Quote]
pt1314917 2008-04-16
  • 打赏
  • 举报
回复


好好打赏小龟子
加载更多回复(4)

34,590

社区成员

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

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