루프 내에서 쿼리 쿼리를 사용하여 각 행에 대해 선택 목록을 작성해야하는 문제를 어떻게 해결하지 않습니까? 내 예를 설명하는 데 도움이 경우루프 내에서 선택 목록 작성
<cfquery name="qryAction" datasource="myDataSource">
SELECT ActionID,CustID,ActionName FROM AvailableActions
</cfquery>
<cfquery name="qryOrderHeader" datasource="myDataSource">
SELECT CustID FROM OrderHeader
</cfquery>
<html>
<body>
<cfform preservedata="yes">
<cfloop query="qryOrderHeader">
<cfquery name="qry3" dbtype="query">
SELECT ActionID,ActionName FROM qryAction
WHERE CustID = #qryOrderHeader.CustID#
</cfquery>
<cfselect name="ActionID" query="qry3" display="ActionName" value="ActionID" />
</cfloop>
</cfform>
</body>
</html>
가 여기에 SQL의 :이 예에서
, 모든 고객은 해당 고객에 고유 한 행동의 목록이 있습니다.
use tempdb
GO
create table Cust(
CustID Int Identity Primary Key,
CustName Varchar(255)
)
GO
INSERT INTO Cust(CustName) values('One')
INSERT INTO Cust(CustName) values('Two')
GO
create table AvailableActions(
ActionID Int Identity Primary Key,
CustID Int,
ActionName Varchar(255)
)
GO
INSERT INTO AvailableActions(CustID,ActionName) VALUES(1,'Insert')
INSERT INTO AvailableActions(CustID,ActionName) VALUES(1,'Edit')
INSERT INTO AvailableActions(CustID,ActionName) VALUES(1,'Delete')
INSERT INTO AvailableActions(CustID,ActionName) VALUES(2,'Insert')
INSERT INTO AvailableActions(CustID,ActionName) VALUES(2,'Edit')
GO
CREATE TABLE OrderHeader(
OrderHeaderID Int Identity Primary Key,
CustID Int
)
INSERT INTO OrderHeader(CustID) VALUES(1)
INSERT INTO OrderHeader(CustID) VALUES(2)
INSERT INTO OrderHeader(CustID) VALUES(2)
가장 좋은 결과는 qryOrderHeader에 ActionID 및 ActionName을 포함하는 것입니다.
<cfquery name="qryAction" datasource="myDataSource">
SELECT ActionID,CustID,ActionName
FROM AvailableActions
ORDER BY CustID
</cfquery>
<cfoutput query="qryAction" group="CustID">
<select name="actionid">
<cfoutput>
<option value="#val(ActionID)#">#htmlEditFormat(ActionName)#</option>
</cfoutput>
</select>
</cfoutput>
주 첫 번째 (또는 유일한) 순서에 의해로 CustID를 지정해야합니다
감사합니다. Michael. AvailableActions 테이블을 OrderHeader 테이블에 조인하면 OrderHeader 당 여러 행이 생성됩니다. –
Michael의 의견은 어디에 있는지 잘 모르겠지만 여러 행을 가져 오기 위해 합류하는 방법이 있습니다. 그러면 Ben의 대답에 따라 그룹화를하면 자신이 원하는 것을 얻을 수 있습니다. –