前天的问题,到现在连续发了4张贴子,还未解决,救命啊!~~~~

Allan168 2005-04-12 10:11:50
oracle数据库,我的表结构如下:

新闻表a结构:
ID (新闻ID)
Title (新闻标题)
Type (新闻类型,与b表ID对应)
Content (新闻内容)

新闻类型表b结构
ID (类型ID)
Type (新闻类型)
ImageUrl (表示此类型的图片)

我想实现的是:取出b表中的所有类型即Type,和ImageUrl
并找到a表中各自属于这些类型的新闻标题(Title字段)
每种类型下都有很多条,但我只要每种类型的前4条(rownum=1,rownum=2,rownum=3,rownum=4)
和每种类型下rownum=1的新闻的内容(Content字段)

也就是说,我需要这7个元素(需要重命名,即as),比如:
7个元素:b.Type b.ImageUrl a.Title1 a.Content1
a.Title2
a.Title3
a.Title4

解释:a.Title1,a.Title2,a.Title3,a.Title4
表示:表a中属同一类型的第1/2/3/4条记录的Title值;

求此SQL语句,在线等,各位帮帮忙吧,小弟感激不尽~~~
...全文
131 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
hchxxzx 2005-04-14
  • 打赏
  • 举报
回复
接分,谢谢
Allan168 2005-04-14
  • 打赏
  • 举报
回复
hchxxzx(NET?摸到一点门槛)

请进来,谢谢您这几天就这个问题对我的帮助

感谢CSDN!~~~
hchxxzx 2005-04-14
  • 打赏
  • 举报
回复
假设newb是类型表,newa是新闻表
SELECT a.type,
a.imageurl,
(SELECT b.title FROM newa b WHERE b.type = a.type AND ROWNUM = 1) title1,
(SELECT c.content FROM newa c WHERE c.type = a.type AND ROWNUM = 1) content1,
f_gettitle(a.type,2) title2,
f_gettitle(a.type,3) title3,
f_gettitle(a.type,4) title4
FROM newb a

写个函数来求取
create or replace function f_gettitle(stype in varchar2, sno in NUMBER) return VARCHAR2 is
Result varchar2(200);
BEGIN

SELECT title
INTO RESULT
FROM
(
SELECT rownum sid,a.title
FROM newa a
WHERE a.type = stype
AND rownum <= sno
)
WHERE sid = sno;

return(Result);
end f_gettitle;


速度还是很快的,我的记录里面有1000多条记录,全部求取一次仅0.16秒.你可试试看.
试了一下在一个SQL语句中求取,但没有成功,也许是我功力不够.
syeerzy 2005-04-14
  • 打赏
  • 举报
回复
Allan168 2005-04-12
  • 打赏
  • 举报
回复
崩溃了,你们谁来杀了我吧!!~~~~
TCat 2005-04-12
  • 打赏
  • 举报
回复
oracle 好久没有用了
Allan168 2005-04-12
  • 打赏
  • 举报
回复
用DataList里套DataList或DataGrid我昨天试了,对我的程序更复杂

所以还是希望能直接取出我要的那7个元素再分别绑定

wendua 2005-04-12
  • 打赏
  • 举报
回复
一句不太好写,用个关联吧,取b.Type b.ImageUrl a.Title1 a.Content1作为一组,这个应该好取的,然后再取,b.type a.title,作为一组,其中a.title为2、3、4项(是分开的,每项就是一个记录),然后把这两组的b.type关联起来,在datalist里面套一个datalist来包含a.title的后3项就行了。
Allan168 2005-04-12
  • 打赏
  • 举报
回复
麻烦楼上大哥能不能把SQL语句写下来~~~~
spz1755 2005-04-12
  • 打赏
  • 举报
回复
一条SQL 语句不好实现,写个存储过程吧,
或者分别查
Allan168 2005-04-12
  • 打赏
  • 举报
回复
我肯定要用DataList

表b的Type是动态增加的。
sugar8049 2005-04-12
  • 打赏
  • 举报
回复
大哥~~你为什么要用datalist呢
用table就容易实现的多
Allan168 2005-04-12
  • 打赏
  • 举报
回复
因为我用asp.net的DataList控件实现,所以需要这7个as出来的字段与DataList分别绑定
如下:
<%# DataBinder.Eval(Container.DataItem,"b.Type") %>
<%# DataBinder.Eval(Container.DataItem,"b.ImageUrl") %>
<%# DataBinder.Eval(Container.DataItem,"a.title1") %>
<%# DataBinder.Eval(Container.DataItem,"a.Content1") %>
<%# DataBinder.Eval(Container.DataItem,"a.title2") %>
<%# DataBinder.Eval(Container.DataItem,"a.title3") %>
<%# DataBinder.Eval(Container.DataItem,"a.title4") %>

页面像这样:
--------------------------------------------------
b.Type
--------------------------------------------------
| a.Title1
|-----------------------------
| a.Content1
b.ImageUrl |
|
|
---------------------------------------------------
a.Title2
---------------------------------------------------
a.Title3
---------------------------------------------------
a.Title4
---------------------------------------------------

但怎么实现先不管,我现在只要用一SQL语句取出以上所说的7个元素

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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