佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1324|回复: 13

SQL 求助~~~

[复制链接]
发表于 2-12-2006 12:59 AM | 显示全部楼层 |阅读模式
我有一个table test, 有两个attributes: index, condition
eg,
index         condition
1             a  
1             b
3             a

我要找出同样的index,condition=a 和condition = b
eg. index = 1, condition =a and condition =b
我现在这样写
SELECT index FROM test WHERE (condition IN ('a', 'b')) GROUP BY ISBN HAVING COUNT(index)=2
可是我觉得这样不是很好,请问有没有什么更好办法?(condition可能会更多,eg. condition=a,b,c,d...)

[ 本帖最后由 CoLoUrGhOsT 于 2-12-2006 01:05 AM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

发表于 4-12-2006 01:38 AM | 显示全部楼层
就是说你要select在同样的condition下,index有两个相同的?
回复

使用道具 举报

发表于 9-12-2006 01:37 AM | 显示全部楼层
SELECT index FROM test WHERE condition IN (select distinct condition from test) GROUP BY ISBN HAVING COUNT(index)=2
回复

使用道具 举报

 楼主| 发表于 10-12-2006 12:50 AM | 显示全部楼层
一个相同的index同时拥有两个不同的condition.
这两个condition在database里是不在同一排的,会是两排
eg:
index        condition
1              a
1              b

原帖由 hui_wooi 于 4-12-2006 01:38 AM 发表
就是说你要select在同样的condition下,index有两个相同的?
回复

使用道具 举报

 楼主| 发表于 10-12-2006 12:51 AM | 显示全部楼层
原帖由 microSys 于 9-12-2006 01:37 AM 发表
SELECT index FROM test WHERE condition IN (select distinct condition from test) GROUP BY ISBN HAVING COUNT(index)=2



这就是我想到的方法。。。上面写了。。。请问有没有有别的方法?
回复

使用道具 举报

发表于 11-12-2006 12:58 PM | 显示全部楼层

疑问

原帖由 CoLoUrGhOsT 于 10-12-2006 12:51 AM 发表

这就是我想到的方法。。。上面写了。。。请问有没有有别的方法?



1. 楼主没说 WHERE (condition IN ('a', 'b')) 的 search criteria 是不是dynamic pass in 还是搜寻所有的出现在test table的data.

2.
SELECT INDEX FROM test WHERE condition IN (SELECT DISTINCT condition FROM test) GROUP BY ISBN HAVING COUNT(INDEX)=2

SELECT INDEX FROM test  GROUP BY ISBN HAVING COUNT(INDEX)=2
的结果是一样的, 但peformance 不一样.
回复

使用道具 举报

Follow Us
 楼主| 发表于 12-12-2006 07:47 PM | 显示全部楼层
原帖由 悠哉亭 于 11-12-2006 12:58 PM 发表



1. 楼主没说 WHERE (condition IN ('a', 'b')) 的 search criteria 是不是dynamic pass in 还是搜寻所有的出现在test table的data.

2.
SELECT INDEX FROM test WHERE condition IN (SELECT DISTINCT co ...


是dynamic pass in 的, 所以,可能会是condition IN ('a', 'b')或condition IN ('a', 'b', 'c')或condition IN ('a')等等。
回复

使用道具 举报

发表于 14-12-2006 12:01 PM | 显示全部楼层

回复 #7 CoLoUrGhOsT 的帖子

呵呵..dynamic 的condition.

除了 store procedure 或 function, 其他的我觉得不合适.

如果, condition 在 in list 里不是很多, 比如少过50个及有适宜的索引, 我个人觉得你的sql是合适的.

你可以参考以下

http://asktom.oracle.com/pls/ask ... :F4950_P8_DISPLAYID,F4950_P8_B:210612357425,Y
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 15-12-2006 01:27 PM | 显示全部楼层
原帖由 悠哉亭 于 14-12-2006 12:01 PM 发表
呵呵..dynamic 的condition.

除了 store procedure 或 function, 其他的我觉得不合适.

如果, condition 在 in list 里不是很多, 比如少过50个及有适宜的索引, 我个人觉得你的sql是合适的.

你可以参考 ...


谢谢你。
可是假如index 1 的condition 有a, b, c而我的seacrh in 是('a,', 'b'),他会连index 1 也找出来。。。
除了store procedure and function 纯粹sql不能做到吗?
那个url我开不到。。。
回复

使用道具 举报

发表于 15-12-2006 02:59 PM | 显示全部楼层
可是假如index 1 的condition 有a, b, c而我的seacrh in 是('a,', 'b'),他会连index 1 也找出来。。。


啊? 你的问题好象不一样了ler.

假定 table data:
index         condition
1             a  
1             b
1             c
3             a


是不是如果,
search condition 有2个 eg. ('a','b'):
index reult
(no record found)

search condition 有3个 eg. ('a','b','c'):
index result
1


除了store procedure and function 纯粹sql不能做到吗?
那个url我开不到。。。


试试这个URL:
http://asktom.oracle.com
click-> Popular
click-> How can I do a variable "in list"

[ 本帖最后由 悠哉亭 于 15-12-2006 03:02 PM 编辑 ]
回复

使用道具 举报

 楼主| 发表于 21-12-2006 01:37 AM | 显示全部楼层
原帖由 悠哉亭 于 15-12-2006 02:59 PM 发表


啊? 你的问题好象不一样了ler.

假定 table data:
index         condition
1             a  
1             b
1             c
3             a


是不是如果,
search condition 有2个 eg. ('a ...


对了!对了!我就是这个意思。不好意思,我的表达能力很差。。。
回复

使用道具 举报

 楼主| 发表于 8-1-2007 06:58 PM | 显示全部楼层
请问真的没办法做到吗?
回复

使用道具 举报

发表于 9-1-2007 01:16 PM | 显示全部楼层

回复 #12 CoLoUrGhOsT 的帖子

SELECT INDEX, CONDITION ,  ISBN FROM TEST A
WHERE A.condition IN ('a', 'b')
AND EXISTS (SELECT 1  
FROM TEST  B
WHERE A.INDEX=B.INDEX
AND A.ISBN=B.ISBN HAVING COUNT(INDEX) = 2)
AND EXISTS (SELECT 1 FROM TEST C
WHERE  A.INDEX=C.INDEX
AND A.ISBN=C.ISBN
AND C.condition IN ('a', 'b')
HAVING COUNT(INDEX) = 2);

('a', 'b'), COUNT(INDEX) = 2 是 dynamic 的.


不知ISBN在那里来的?

不过, 我还是建议你用 store procedure.
回复

使用道具 举报

 楼主| 发表于 25-1-2007 11:22 PM | 显示全部楼层
哦。。。非常谢谢。。。
回复

使用道具 举报

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

本版积分规则

 

ADVERTISEMENT


本周最热论坛帖子本周最热论坛帖子

ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


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

GMT+8, 27-8-2025 07:12 AM , Processed in 0.121563 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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