一条SQL的语句的问题
2005-08-26 11:50
204 查看
要求:
表:IP
1 start int 4 1
0 [end] int 4 1
0 country nvarchar 50 1
表:User
1 IP int 4 0
0 UserName varchar 50 1
假设所有字段均不允许为空,start和end表示IP的区间,
现在希望能通过写一条语句,显示出所有用户所处的country,同时显示UserName.
假设:只允许在一条件语句中写出,同时不允许使用存储过程。
在SQLSERVER上试验为:
select username,country from ip,[user] where [user].ip between ip.start and ip.[end]
从上面来看,表中好像没有关联字段,这两个表之间好像没有关联,但事实上是有关联的,user.ip是落在ip.start和ip.end之间时,关联就建立起来了。
在实际使用时使用的语句是(ORACLE9i中):
SELECT * FROM User,(select begin,end,country from ip where begin <100000)
IP WHERE (user.Ip BETWEEN ip.begin AND ip.end);
但在这里有个麻烦的事情,就是user,(select begin,end,country from ip where begin <100000)
我不得不在from子句中写出
(select begin,end,country from ip where begin <100000),以对存在的区间进行过滤。
我并不希望出现这种情况,希望from中不出现任何有关ip表的信息。
而在where子句和select 子句中,可以出现ip表。
对于条件的处理之所以希望能拉到where 子句中来,是因为这个查询最终需要拼装到其它的SQL语句中,具体也很难说清楚,就事论事来说,的确不太容易。
表:IP
1 start int 4 1
0 [end] int 4 1
0 country nvarchar 50 1
表:User
1 IP int 4 0
0 UserName varchar 50 1
假设所有字段均不允许为空,start和end表示IP的区间,
现在希望能通过写一条语句,显示出所有用户所处的country,同时显示UserName.
假设:只允许在一条件语句中写出,同时不允许使用存储过程。
在SQLSERVER上试验为:
select username,country from ip,[user] where [user].ip between ip.start and ip.[end]
从上面来看,表中好像没有关联字段,这两个表之间好像没有关联,但事实上是有关联的,user.ip是落在ip.start和ip.end之间时,关联就建立起来了。
在实际使用时使用的语句是(ORACLE9i中):
SELECT * FROM User,(select begin,end,country from ip where begin <100000)
IP WHERE (user.Ip BETWEEN ip.begin AND ip.end);
但在这里有个麻烦的事情,就是user,(select begin,end,country from ip where begin <100000)
我不得不在from子句中写出
(select begin,end,country from ip where begin <100000),以对存在的区间进行过滤。
我并不希望出现这种情况,希望from中不出现任何有关ip表的信息。
而在where子句和select 子句中,可以出现ip表。
对于条件的处理之所以希望能拉到where 子句中来,是因为这个查询最终需要拼装到其它的SQL语句中,具体也很难说清楚,就事论事来说,的确不太容易。
相关文章推荐
- 一条SQL语句,关于字符分割关联多条记录的问题
- 一条sql语句的优化 (问题整理篇)
- 一条语句简单解决“每个Y的最新X”的SQL经典问题
- SQLite一条SQL语句插入多条记录失败的问题
- [导入][转]一条语句简单解决“每个Y的最新X”的SQL经典问题
- 一条执行4秒的sql语句导致的系统问题 (转)
- SQL反模式学习笔记18 减少SQL查询数据,避免使用一条SQL语句解决复杂问题
- 一条语句简单解决“每个Y的最新X”的SQL经典问题
- [VB.NET]再求一条SQL语句更新问题
- 一条sql语句两次foreach迭代问题
- SQL语句中一条常见的行合并问题
- 一条sql语句引发mysql不停创建临时表的问题解决..coping to tmp table on desk
- 一条删除所有表中数据的SQL语句
- 子查询sql语句及注意问题
- 复杂或有趣的MDX问题求解(3)-SQL查询事实表与MDX语句查询的关系示例
- 大虾们,帮我看阿奎那这段SQL语句问题出在哪里了
- 51、430、stm32周期和执行一条语句需要多长时间的问题
- android之Android中的SQL查询语句LIKE绑定参数问题解决办法(sqlite数据库)
- MYSQL用一条SQL语句删除重复记录
- VB.net SQL语句不区分大小写,以及空格的问题