佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

楼主: tensaix2j

SQL杂症集

[复制链接]
发表于 19-9-2006 10:00 AM | 显示全部楼层

回复 #40 max5007 的帖子

是的,被发放到D2和D4这两个边疆
回复

使用道具 举报


ADVERTISEMENT

发表于 19-9-2006 10:31 AM | 显示全部楼层
原帖由 神仙祖宗 于 19-9-2006 10:00 AM 发表
是的,被发放到D2和D4这两个边疆


那个 15 根据什么定义来 break 的?
因为这样我们根本不知道怎么样拆散的
回复

使用道具 举报

发表于 19-9-2006 10:36 AM | 显示全部楼层

回复 #42 max5007 的帖子

FIFO模式
D2 数量只有10个,但回来的有15个,所以将15个分出10个放在D2,剩下5个就留给下一位,就是D4,以此类推
回复

使用道具 举报

发表于 19-9-2006 05:08 PM | 显示全部楼层
我觉得这个需要用到program来做,
它没有一定的规律,而且需要起算,
query的用法多数是拿出data而不是去计算。
回复

使用道具 举报

发表于 19-9-2006 05:36 PM | 显示全部楼层
原帖由 神仙祖宗 于 19-9-2006 10:36 AM 发表
FIFO模式
D2 数量只有10个,但回来的有15个,所以将15个分出10个放在D2,剩下5个就留给下一位,就是D4,以此类推


这用一个SQL statement可以做到吗?
回复

使用道具 举报

发表于 19-9-2006 06:19 PM | 显示全部楼层
嗯,我还是SQL菜鸟,这么复杂我还不会。。。不过。。。
我猜,他是要用store procedure来做吧?
回复

使用道具 举报

Follow Us
发表于 20-9-2006 09:51 AM | 显示全部楼层
原帖由 max5007 于 19-9-2006 05:36 PM 发表


这用一个SQL statement可以做到吗?

以我有限的知识。。。做不到,不过希望能集思广益
回复

使用道具 举报

发表于 20-9-2006 06:03 PM | 显示全部楼层
可以到这里帮我看看问题吗?
按这里
回复

使用道具 举报


ADVERTISEMENT

发表于 21-9-2006 09:43 AM | 显示全部楼层
用普通的 sql 应该不行, 但可以尝试 stored procedure.
回复

使用道具 举报

发表于 24-9-2006 03:57 AM | 显示全部楼层
请问goatstudio大大

1. sql statement 有长度的限制吗?

2. 如果有一个sql statement如下

SELECT A.Student FROM tblA AS A WHERE
A.ID IN ('FBF54771-2497-4B99-BCA7-6C749C524229'
,'FBF54771-2497-4B99-BCA7-6DEF11124229'
,'FBF54771-2497-4B99-BCA7-6C7492232426'
,'FBF54771-2497-4B99-BCA7-6C749C529099'..... 一百个GUID )

会有问题吗?

谢谢

回复

使用道具 举报

发表于 24-9-2006 10:26 AM | 显示全部楼层
原帖由 DRAGONISM 于 24-9-2006 03:57 AM 发表
请问goatstudio大大

1. sql statement 有长度的限制吗?

2. 如果有一个sql statement如下

SELECT A.Student FROM tblA AS A WHERE
A.ID IN ('FBF54771-2497-4B99-BCA7-6C749C524229'
,'FBF54771-2497- ...


1. 16777216
2. 不会有问题... 但效率肯定有问题... 不知会不会 time out...

看这里: A Comparison of SQL Server 2000 with DB2 v8.1
回复

使用道具 举报

发表于 25-9-2006 12:44 AM | 显示全部楼层
谢谢goatstudio大大抽空答复之前的问题

-----------------------------------------

Line    LinkedLine
1         Null
2          5
3         Null
4         Null
5         Null

当一个record的LinkedLine不是Null时,把这个record放在LinkedLine上面。上面的情形,要把Line 2放在Line 5上面。

要把他弄成:

Line    LinkedLine
1         Null
3         Null
4         Null
2          5
5         Null



另一情形,
Line    LinkedLine
1         Null
2          5
3          1
4         Null
5         Null

要把他弄成:

Line    LinkedLine
3          1
1         Null
4         Null
2          5
5         Null

我可以用2个statement加一些programming弄成,可是想知道可以单单用一个statement吗?

谢谢指导
回复

使用道具 举报

发表于 27-9-2006 01:44 AM | 显示全部楼层
原帖由 DRAGONISM 于 25-9-2006 12:44 AM 发表
谢谢goatstudio大大抽空答复之前的问题

-----------------------------------------

Line    LinkedLine
1         Null
2          5
3         Null
4         Null
5         Null

当一个record ...


你需要说出你这样做的 criteria... 才能判断是否能用 sql statement 来达到.
回复

使用道具 举报

发表于 27-9-2006 10:04 PM | 显示全部楼层
不知道有没有理解错你的要求, 试试这个


select Line, LinkedLine, 'tmpField' = case
                                 when LinkedLine is null then Line
                                 Else LinkedLine -1
                           End
       from tbTest
       order by 3, 2




原帖由 DRAGONISM 于 25-9-2006 12:44 AM 发表
谢谢goatstudio大大抽空答复之前的问题

-----------------------------------------

Line    LinkedLine
1         Null
2          5
3         Null
4         Null
5         Null

当一个record ...
回复

使用道具 举报

 楼主| 发表于 28-9-2006 06:53 PM | 显示全部楼层
那个case when 还真管用下。。
回复

使用道具 举报

发表于 22-10-2006 11:54 AM | 显示全部楼层
请问各位高手,有没有只DISPLAY前几大的COMMAND
比如说要DISPLAY前5位分数最多的人.
回复

使用道具 举报


ADVERTISEMENT

发表于 22-10-2006 12:59 PM | 显示全部楼层
原帖由 天魔神 于 22-10-2006 11:54 AM 发表
请问各位高手,有没有只DISPLAY前几大的COMMAND
比如说要DISPLAY前5位分数最多的人.



首先你可以用order by如 最多钱的人 Order By Credit DESC LIMIT 5
这样就可以显示前5大的(for mysql only)

mssql 可以用 SELECT TOP XXXXXX
回复

使用道具 举报

发表于 22-10-2006 10:20 PM | 显示全部楼层
原帖由 max5007 于 22-10-2006 12:59 PM 发表



首先你可以用order by如 最多钱的人 Order By Credit DESC LIMIT 5
这样就可以显示前5大的(for mysql only)

mssql 可以用 SELECT TOP XXXXXX


我是用SQL-PLUS, 之前我是放order by  maxcount desc,加了高手说的LIMIT,ERROR是SQL command not properly ended,

感谢高手的解答.
回复

使用道具 举报

发表于 23-10-2006 03:01 AM | 显示全部楼层
原帖由 天魔神 于 22-10-2006 10:20 PM 发表


我是用SQL-PLUS, 之前我是放order by  maxcount desc,加了高手说的LIMIT,ERROR是SQL command not properly ended,

感谢高手的解答.


SQL-PLUS 应该这样写:

SELECT * FROM (
  SELECT
    ROW_NUMBER() OVER (ORDER BY key ASC) AS rownumber,
    columns
  FROM tablename
)
WHERE rownumber <= 5


[ 本帖最后由 goatstudio 于 23-10-2006 03:03 AM 编辑 ]
回复

使用道具 举报

发表于 27-10-2006 01:43 AM | 显示全部楼层
请问各位高手,最近小弟我在做一个足球的作业.运用于SQL-PLUS

DBMS_output.put_line('Team  Played  Won  Drew  Lost  GF  GA  GD  Points');
DBMS_output.put_line('----  ------  ---  ----  ----  --  --  --  ------');

高手或足球迷应该知道以上的东西吧.=)

目前我是用CURSOR把他CURSOR去一个我做的SOCCER TABLE,TABLE里面有TEAM的成绩.

AAA 1 BBB 0
CCC 2 DDD 5
AAA 2 DDD 2

我现在遇到的问题是,有什么COMMAND是让SQL查到有重复的TEAM,然后不要再LIST出该TEAM,然后PLAYED + 1的吗?或有什么相同的例子给予小弟参考吗?

因为AAA和DDD又出现了,不可能在TEAM那里DISPLAY两次AAA和DDD吧...

感激~~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 14-11-2024 08:59 PM , Processed in 0.224705 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表