在查询中有这么多查询我很困惑 [英] so many queries within queries I'm confused

查看:61
本文介绍了在查询中有这么多查询我很困惑的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

第一个抱歉leangth ...不能再削减了。


我希望输出是

组织320000

基金100004

计划777777

账户1 7234.55

账户2 -347.99

账户3 823.55

计划888888

账户1 8745.99

账户2 -9878.33

..... on and on。


< b>我可以上班的是< / b>

组织320000

基金100004

计划777777

账户1 7234.55


组织320000

基金100004

计划777777

账户2 -347.99

.........开启和关闭。


下面的代码看起来不错但是组织,基金,计划编号

永远不会改变。我一直在看这两天

天......帮助!


< table border =" 0">

<%

sSQL3 =" SELECT Distinct Organization" &安培; _

"来自 &安培; TheYear& _

" WHERE MonthPD =''" &安培; ThePD& "''"

设置rs3 = Connect.Execute(sSQL3)

%>

< tr>

< td> < font color ="#0000FF"> Organization< / font>< / td>

< td colspan =" 10"><%= rs3(""组织")%>< / td>

< / tr>

<%直到rs3.eof%>

<%

sSQL2 =" SELECT Distinct Fund" &安培; _

"来自 &安培; TheYear& _

" WHERE MonthPD =''" &安培; ThePD& "''"

设置rs2 = Connect.Execute(sSQL2)

%>

< tr>

< td> < font color ="#0000FF"> Fund< / font>< / td>

< td colspan =" 10"><%= rs2(""基金")%>< / td>

< / tr>

<%直到rs2.eof%>

<%

sSQL4 =" SELECT Distinct Program,Fund,Organization" &安培; _

"来自 &安培; TheYear& _

" WHERE MonthPD =''" &安培; ThePD& "" &安培; _

" ORDER BY组织,基金,计划

set rs4 = Connect.Execute(sSQL4)

TheProg = rs4(" Program)

%>

< tr>

< td> < font color ="#0000FF"> Program< / font> < / td>

< td colspan =" 10"><%= TheProg%>< / td>

< / tr>

<%直到rs4.eof%>

< tr>

< td>帐户< / div>< / td>

< td><%= TheAct%> < / td>

< td><%= TotalAmt%>< / td>

< / tr>

<%

TheFund = rs4(" Fund")

TheOrg = rs4(" Organization")

TheProg = rs4( 程序)

SQL =" SELECT *" &安培; _

" FROM" &安培; TheYear& _

" WHERE MonthPD =''" &安培; ThePD& "" &安培; _

"和组织=''" &安培; TheOrg& "" &安培; _

"和Fund =''" &安培;基金会& "" &安培; _

"和Program =''" &安培; TheProg& "" &安培; _

" ORDER BY Account"

set rs = Connect.Execute(sSQL)

TotalAmt = 0

直到rs.eof

TheAct = rs(" Account")

TotalAmt = TotalAmt + rs(" PdAmount")

Response.Flush

rs.MoveNext

循环


Response.Flush

rs4.MoveNext

循环


Response.Flush

rs2.MoveNext

循环


回应。同花顺

rs3.MoveNext

循环%>

< / table>

1st sorry about leangth...couldn''t really cut anymore.

I want the output to be
Organization 320000
Fund 100004
Program 777777
Account1 7234.55
Account2 -347.99
Account3 823.55

Program 888888
Account1 8745.99
Account2 -9878.33
.....on and on.

<b>What I can get to work is</b>
Organization 320000
Fund 100004
Program 777777
Account1 7234.55

Organization 320000
Fund 100004
Program 777777
Account2 -347.99
.........on and on.

The code below looks right but the Organization, Fund, Program numbers
never change when they should. I''ve been looking at this for two
days...help!

<table border="0">
<%
sSQL3 = "SELECT Distinct Organization" & _
" FROM " & TheYear & _
" WHERE MonthPD = ''" & ThePD & "''"
set rs3 = Connect.Execute(sSQL3)
%>
<tr>
<td> <font color="#0000FF">Organization </font></td>
<td colspan="10"><%=rs3("Organization")%></td>
</tr>
<% Do until rs3.eof %>
<%
sSQL2 = "SELECT Distinct Fund" & _
" FROM " & TheYear & _
" WHERE MonthPD = ''" & ThePD & "''"
set rs2 = Connect.Execute(sSQL2)
%>
<tr>
<td> <font color="#0000FF">Fund </font></td>
<td colspan="10"><%=rs2("Fund")%></td>
</tr>
<% Do until rs2.eof %>
<%
sSQL4 = "SELECT Distinct Program, Fund, Organization" & _
" FROM " & TheYear & _
" WHERE MonthPD = ''" & ThePD & "''" & _
" ORDER BY Organization, Fund, Program"
set rs4 = Connect.Execute(sSQL4)
TheProg = rs4("Program")
%>
<tr>
<td> <font color="#0000FF">Program</font> </td>
<td colspan="10"><%=TheProg%></td>
</tr>
<% Do until rs4.eof %>
<tr>
<td>Account</div></td>
<td><%=TheAct%> </td>
<td><%=TotalAmt%></td>
</tr>
<%
TheFund = rs4("Fund")
TheOrg = rs4("Organization")
TheProg = rs4("Program")
SQL = "SELECT *" & _
"FROM " & TheYear & _
"WHERE MonthPD = ''" & ThePD & "''" & _
" and Organization = ''" & TheOrg & "''" & _
" and Fund = ''" & TheFund & "''" & _
" and Program = ''" & TheProg & "''" & _
" ORDER BY Account"
set rs = Connect.Execute(sSQL)
TotalAmt=0
Do until rs.eof
TheAct = rs("Account")
TotalAmt = TotalAmt + rs("PdAmount")

Response.Flush
rs.MoveNext
Loop

Response.Flush
rs4.MoveNext
Loop

Response.Flush
rs2.MoveNext
Loop

Response.Flush
rs3.MoveNext
Loop %>
</table>

推荐答案

您可以使用单个记录集执行此操作(请参阅 http:// www.aspfaq.com/2241 )。

我会让HTML非常漂亮。


<%

sql =" SELECT Organization,Fund,Program,Account,PdAmount" &安培; _

" FROM" &安培; TheYear& _

"按组织,基金,计划,账户排序"


cOrg ="":cFund ="":cProg ="":cAcc =""


设置rs = conn.execute(sql)

而不是rs.eof

nOrg = rs( 0):nFund = rs(1):nProg = rs(2)

nAcc = rs(3):nPd = rs(4)


if nOrg<> cOrg然后''new org

response.write"< p>组织:" &安培; nOrg

cOrg = nOrg

结束如果


如果nFund<> cFund然后''新基金

response.write"< br>基金:" &安培; nFund

cFund = nFund

结束如果


如果nProg<> cProg然后

response.write"< br>程序:" &安培; nProg

cProg = nProg

结束如果


response.write"< br>" &安培; nAcc& ":" &安培; nPd


rs.movenext

循环

%>


你的桌子真的以年命名?这是一个可怕的设计,你真的

应该有一张桌子并且有一年的专栏。你真的搞乱了关系设计和实体建模的整个想法......


-
http://www.aspfaq.com/

(反向回复地址。 )


" Abby Lee" < AB ******* @ hotmail.com>在消息中写道

news:80 ************************** @ posting.google.c om ...
You can do this with a single recordset (see http://www.aspfaq.com/2241 ).
I''ll leave the HTML pretty-ifying up to you.

<%
sql = "SELECT Organization, Fund, Program, Account, PdAmount" & _
"FROM " & TheYear & _
" ORDER BY Organization, Fund, Program, Account"

cOrg = "": cFund = "": cProg = "": cAcc = ""

set rs = conn.execute(sql)

do while not rs.eof
nOrg = rs(0): nFund = rs(1): nProg = rs(2)
nAcc = rs(3): nPd = rs(4)

if nOrg <> cOrg then '' new org
response.write "<p>Organization:" & nOrg
cOrg = nOrg
end if

if nFund <> cFund then '' new fund
response.write "<br>Fund:" & nFund
cFund = nFund
end if

if nProg <> cProg then
response.write "<br>Program:" & nProg
cProg = nProg
end if

response.write "<br>" & nAcc & ":" & nPd

rs.movenext
loop
%>

Are your tables really named by year? This is horrible design, you really
should have ONE table and have a column for year. You''re really messing up
the whole idea of relational design and entity modeling...

--
http://www.aspfaq.com/
(Reverse address to reply.)


"Abby Lee" <ab*******@hotmail.com> wrote in message
news:80**************************@posting.google.c om...
第一个抱歉leangth ......真的不能再削减了。

我希望输出结构是
组织320000
基金100004
Program 777777
Account1 7234.55
Account2 -347.99
Account3 823.55

程序888888
Account1 8745.99
Account2 -9878.33 ....等等。

< b>我可以上班的是< / b>
组织320000
基金100004
程序777777
账号1 7234.55

组织320000
基金100004
程序777777
账号2 -347.99
........等等。

下面的代码看似正确,但组织,基金,计划编号从未改变。我一直在看这两天......帮忙!

< table border =" 0">
<%
sSQL3 =" SELECT Distinct Organization" &安培; _
来自 &安培; TheYear& _
WHERE MonthPD =''" &安培; ThePD& "''"
设置rs3 = Connect.Execute(sSQL3)
%>
< tr>
< td> < font color ="#0000FF"> Organization< / font>< / td>
< td colspan =" 10"><%= rs3(" Organization")% >< / td>
< / tr>
<%直到rs3.eof%>
<%
sSQL2 =" SELECT Distinct Fund" &安培; _
来自 &安培; TheYear& _
WHERE MonthPD =''" &安培; ThePD& "''"
设置rs2 = Connect.Execute(sSQL2)
%>
< tr>
< td> < font color ="#0000FF"> Fund< / font>< / td>
< td colspan =" 10"><%= rs2(" Fund")% >< / td>
< / tr>
<%直到rs2.eof%>
<%
sSQL4 =" SELECT Distinct Program,基金,组织 &安培; _
来自 &安培; TheYear& _
WHERE MonthPD =''" &安培; ThePD& "" &安培; _
ORDER BY组织,基金,计划
设置rs4 = Connect.Execute(sSQL4)
TheProg = rs4(程序)
%>
< tr>
< td> < font color ="#0000FF"> Program< / font> < / td>
< td colspan =" 10"><%= TheProg%>< / td>
< / tr>
<%Do直到rs4.eof%>
< tr>
< td>帐户< / div>< / td>
< td><%= TheAct%> < / td>
< td><%= TotalAmt%>< / td>
< / tr>
<%
TheFund = rs4( 基金)
TheOrg = rs4(组织)
TheProg = rs4(Program)
SQL =" SELECT *" &安培; _
" FROM" &安培; TheYear& _
WHERE MonthPD =''" &安培; ThePD& "" &安培; _
和组织=''" &安培; TheOrg& "" &安培; _
和Fund =''" &安培;基金会& "" &安培; _
和Program =''" &安培; TheProg& "" &安培; _
ORDER BY Account"
set rs = Connect.Execute(sSQL)
TotalAmt = 0
直到rs.eof
TheAct = rs(账户)
TotalAmt = TotalAmt + rs(PdAmount)

Response.Flush
rs.MoveNext
循环

Response.Flush
rs4 .MoveNext
循环

Response.Flush
rs2.MoveNext
循环

Response.Flush
rs3.MoveNext
循环%>
< / table>
1st sorry about leangth...couldn''t really cut anymore.

I want the output to be
Organization 320000
Fund 100004
Program 777777
Account1 7234.55
Account2 -347.99
Account3 823.55

Program 888888
Account1 8745.99
Account2 -9878.33
....on and on.

<b>What I can get to work is</b>
Organization 320000
Fund 100004
Program 777777
Account1 7234.55

Organization 320000
Fund 100004
Program 777777
Account2 -347.99
........on and on.

The code below looks right but the Organization, Fund, Program numbers
never change when they should. I''ve been looking at this for two
days...help!

<table border="0">
<%
sSQL3 = "SELECT Distinct Organization" & _
" FROM " & TheYear & _
" WHERE MonthPD = ''" & ThePD & "''"
set rs3 = Connect.Execute(sSQL3)
%>
<tr>
<td> <font color="#0000FF">Organization </font></td>
<td colspan="10"><%=rs3("Organization")%></td>
</tr>
<% Do until rs3.eof %>
<%
sSQL2 = "SELECT Distinct Fund" & _
" FROM " & TheYear & _
" WHERE MonthPD = ''" & ThePD & "''"
set rs2 = Connect.Execute(sSQL2)
%>
<tr>
<td> <font color="#0000FF">Fund </font></td>
<td colspan="10"><%=rs2("Fund")%></td>
</tr>
<% Do until rs2.eof %>
<%
sSQL4 = "SELECT Distinct Program, Fund, Organization" & _
" FROM " & TheYear & _
" WHERE MonthPD = ''" & ThePD & "''" & _
" ORDER BY Organization, Fund, Program"
set rs4 = Connect.Execute(sSQL4)
TheProg = rs4("Program")
%>
<tr>
<td> <font color="#0000FF">Program</font> </td>
<td colspan="10"><%=TheProg%></td>
</tr>
<% Do until rs4.eof %>
<tr>
<td>Account</div></td>
<td><%=TheAct%> </td>
<td><%=TotalAmt%></td>
</tr>
<%
TheFund = rs4("Fund")
TheOrg = rs4("Organization")
TheProg = rs4("Program")
SQL = "SELECT *" & _
"FROM " & TheYear & _
"WHERE MonthPD = ''" & ThePD & "''" & _
" and Organization = ''" & TheOrg & "''" & _
" and Fund = ''" & TheFund & "''" & _
" and Program = ''" & TheProg & "''" & _
" ORDER BY Account"
set rs = Connect.Execute(sSQL)
TotalAmt=0
Do until rs.eof
TheAct = rs("Account")
TotalAmt = TotalAmt + rs("PdAmount")

Response.Flush
rs.MoveNext
Loop

Response.Flush
rs4.MoveNext
Loop

Response.Flush
rs2.MoveNext
Loop

Response.Flush
rs3.MoveNext
Loop %>
</table>



嗯,这里有一点点逻辑,例如如果您有两个组织

使用相同的程序或两个程序使用相同的帐户等。您可以通过将子项设置为"来解决这个问题。无论何时你进入新的等级,例如


<%

sql =" SELECT Organization,Fund,Program,Account,PdAmount" &安培; _

" FROM" &安培; TheYear& _

"按组织,基金,计划,账户排序"


cOrg ="":cFund ="":cProg ="":cAcc =""


设置rs = conn.execute(sql)

而不是rs.eof

nOrg = rs( 0):nFund = rs(1):nProg = rs(2)

nAcc = rs(3):nPd = rs(4)


if nOrg<> cOrg然后''new org

response.write"< p>组织:" &安培; nOrg

cOrg = nOrg:cFund ="":cProg =""

end if


if nFund <> cFund然后''新基金

response.write"< br>基金:" &安培; nFund

cFund = nFund:cProg =""

end if


if nProg<> cProg然后

response.write"< br>程序:" &安培; nProg

cProg = nProg

结束如果


response.write"< br>" &安培; nAcc& ":" &安培; nPd


rs.movenext

loop

%>


-
http://www.aspfaq.com/

(反向地址回复。)
Well, there''s a little bit of logic to fit here, e.g. if you have two orgs
with the same program or two programs with the same account, etc. You can
solve that by setting children to "" whenever you hit a new tier, e.g.

<%
sql = "SELECT Organization, Fund, Program, Account, PdAmount" & _
"FROM " & TheYear & _
" ORDER BY Organization, Fund, Program, Account"

cOrg = "": cFund = "": cProg = "": cAcc = ""

set rs = conn.execute(sql)

do while not rs.eof
nOrg = rs(0): nFund = rs(1): nProg = rs(2)
nAcc = rs(3): nPd = rs(4)

if nOrg <> cOrg then '' new org
response.write "<p>Organization:" & nOrg
cOrg = nOrg: cFund="": cProg=""
end if

if nFund <> cFund then '' new fund
response.write "<br>Fund:" & nFund
cFund = nFund: cProg=""
end if

if nProg <> cProg then
response.write "<br>Program:" & nProg
cProg = nProg
end if

response.write "<br>" & nAcc & ":" & nPd

rs.movenext
loop
%>

--
http://www.aspfaq.com/
(Reverse address to reply.)


Aaron,


你是最甜蜜的事......我可以吻你。


Abby
Aaron,

You are the sweetest thing...I could just kiss you.

Abby


这篇关于在查询中有这么多查询我很困惑的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆