[求助]请教大家一个SQL多条件查询的问题

huming_jluzh 2006-11-03 11:10:18
本人有这样一个表news如下:
newsid,adminid,teacherid,news_title,news_content,time
现在有一个查询界面:
里边有一个下拉列表,根据里边的值可以查询所有adminid或者teacherid发表的news;
还有一个下拉列表,根据里边的值可以按time或者newsid升序排列;
一个文本区域,输入adminid或者teacherid,可以查询相应的news
还有两个文本区域,输入起止时间,可以按time查询
以上的查询条件,用户可以全选或全不选,也可只选择其中一条或多条。目前主要是sql写不明白,因为有一些特殊的语句,比如说,order by 用来排序,XX is not null用来选择某种身份的人发布的所有news,但是如果用户把这些查询字段留空,SQL语句就会出错,如果只是XX=XX,那就好办了,即使留空SQL也不会出错。另外,如果写在一条SQL语句中,涉及到where的开始,中间有几个and,这些好象都很难判断,我目前实在是没有思路了!
大概就是这么个意思,写得不怎么规范,就是想找一种思路。
请各位高手指点!
...全文
157 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
huming_jluzh 2006-11-06
  • 打赏
  • 举报
回复
@
这个符号是什么意思?
我怎么从来没见过?
另外,问题已经解决了,思路和zhubo的差不多,谢谢大家!
bugchen888 2006-11-03
  • 打赏
  • 举报
回复
SELECT *
FROM news
WHERE 1=1
AND (adminid=@adminid OR @adminid='')
AND (teacherid=teacherid OR @teacherid='')
AND (Time BETWEEN @FROM AND @TO OR @FROM ='' AND @TO='')
ORDER BY decode(@order,'time',time,'newsid',newsid,1)
zhubo 2006-11-03
  • 打赏
  • 举报
回复
use a parameter to store all of the conditions.

each condition like:

time > XXX an time < XXX and

use and to concat all of these conditions.
you should have a basic query clause like 'select XXX from XXX where '


at last, trim the right and of the conditions.


you will get the final clause like:

select XXX from XXX where condition1 and condition2 and conditionn...
小李木耳 2006-11-03
  • 打赏
  • 举报
回复
where 1=1
if 文本区域=空 then
and ....
end if

if 文本区域=空 then
and ....
end if

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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