2012-12-09 5 views
0

기존 변수를 사용하는 동안 CF에서 일부 쿼리를 실행하면 결과가 표시되지 않습니다. 다음은 쿼리입니다 : 당신이이 #의 user.id 번호에서 모든 값을 가져오고 나중은 #의 groep.ownerid 번호 다시 첫 번째 쿼리의 값을 사용하여 첫 번째 볼 수 있듯이출력 값이 나타나지 않음

<cfquery name = "group" datasource = "#DSN#"> 
     SELECT * 
     FROM groups 
     WHERE ownerid=#user.id# 
     ORDER by id 
     LIMIT 0, 30 
</cfquery> 
<cfquery name = "groups" datasource = "#DSN#"> 
     SELECT * 
     FROM group_requests 
     WHERE groupid=#group.ownerid# 
     ORDER by groupid 
     LIMIT 0, 30 
</cfquery> 

<cfoutput query="groups"> 
#groupid# 
</cfoutput> 

. 어떻게 든 출력값이 표시되지 않습니다. 그리고 예, 거기에 가치가 있습니다. 더 일치, 또는 당신이 기대하는 것보다 훨씬 덜 줄 수있는 -

종류에 관해서는,

+0

"groep.ownerid"의 철자가 원본 코드에 없다고 가정합니다. 또한 을 수행하여 첫 번째 쿼리에서 오는 값이 있는지 확인합니다. – BKK

+0

고마워, 나중에 문제를 알아 냈어. CF가 쿼리의 첫 번째 값보다 큰 모든 값을 얻지 못하는 문제가있었습니다. – Yannick

+2

문제로 설명하는 것은 CF의 기본 동작입니다. valuelist() 함수는 모든 값을 가져옵니다. 그러나 시도하려는 작업에 대해 @Sergii가 게시 한 것과 같은 단일 쿼리가 더 나은 방법입니다. –

답변

3

나는 문제가 첫번째 쿼리 multple 레코드를 반환하는 경우에만 첫 group.ownerid 사용되는 것 같다.

첫 번째 쿼리의 결과가 다른 곳에서 사용되지 않는 경우 단일 쿼리로 모두 사용하는 것이 좋습니다. 이런 식으로 뭔가 : 그것은 여기에 두 가지 한계를 가지고 의미가 있지만, 의미있는 제안을 할 수있는 충분한 정보가 아니라면

<cfquery name = "groups" datasource = "#DSN#"> 
    SELECT * 
    FROM group_requests 
    WHERE groupid in 
    (
     SELECT ownerid 
     FROM groups 
     WHERE ownerid = <cfqueryparam cfsqltype="cf_sql_integer" value="#user.id#" /> 
     LIMIT 0, 30 
    ) 
    ORDER by groupid 
    LIMIT 0, 30 
</cfquery> 

또한 잘 모르겠어요.

+1

또 다른 접근법은 테이블 그룹과 group_requests를 조인하는 것입니다. –