Добавление оператора AND в запрос ColdFusion - PullRequest
0 голосов
/ 24 августа 2018

Я пытаюсь добавить AND ActiveFlag = 'Y' (значение в той же таблице, что и CommitteeRoleCode), но все мои попытки либо тормозят, либо игнорируются.Кто-нибудь будет достаточно любезен, чтобы помочь?

Спасибо за ваше время!

<cfparam name="attributes.Address" default="">
<cfparam name="attributes.CommitteeID" default="0">
<cfparam name="attributes.AddressListName" default="">

<cfif Len(Trim(attributes.CommitteeID)) EQ 0>
    <cfset attributes.CommitteeID = 0>
</cfif>

<cfif Len(Trim(attributes.Address))>
    <cfset result = "">
    <cfloop list="#attributes.Address#" index="i">
        <cfif Refind("\[{1}.+\]{1}", i)>
            <!---looking for the 'ALL' member type to grab all categories--->
            <cfif i EQ "[ALL]">
                <cfset l_where = "a.CommitteeRoleCode IS NOT NULL AND c.EmailAddress IS NOT NULL">
            <cfelse>
                <cfset l_where = "a.CommitteeRoleCode=#Chr(39)##ReReplace(i, "\[|\]", "", "ALL")##Chr(39)# AND c.EmailAddress IS NOT NULL">
            </cfif>

            <cfquery datasource="#application.datasource#" name="MemberTypeEmails">
                Select c.EmailAddress
                from (Committee_Role_Ref as a Inner Join Committee_Member as b on a.CommitteeRoleCode=b.CommitteeRoleCode)
                    Inner Join Contact as c on b.ContactID=c.ContactID
                Where #ReReplace(l_where, "\'\'", "'", "ALL")#
                    AND b.CommitteeID=#attributes.CommitteeID#
            </cfquery>
            <cfloop query="MemberTypeEmails">
                <cfif ReFind("[^#chr(13)##chr(10)##chr(9)##chr(32)#]@{1}.+\..+", EmailAddress)>
                    <cfif Len(Trim(result))>
                        <cfset result = result & "," & EmailAddress>
                    <cfelse>
                        <cfset result = EmailAddress>
                    </cfif>
                </cfif>
            </cfloop>
        <cfelseif ReFind(".+@{1}.+\..+", i)>
            <cfif Len(Trim(result))>
                <cfset result = result & "," & i>
            <cfelse>
                <cfset result = i>
            </cfif>
        </cfif>
    </cfloop>

    <cfset "caller.#attributes.AddressListName#" = result>
</cfif>

1 Ответ

0 голосов
/ 24 августа 2018

Вы говорите, что пытаетесь добавить AND ActiveFlag = 'Y' (значение в той же таблице, что и CommitteeRoleCode).Тем не менее, значение CommitteeRoleCode появляется в двух таблицах, и я знаю это из-за этой части запросадействительно в, а затем префикс его соответственно в запросе либо с.или б.т. е.

AND a.ActiveFlag = 'Y'

или

AND b.ActiveFlag = 'Y'

Затем поместите предложение AND в указанное ниже место.Но если вам нужна дополнительная помощь, вам также следует опубликовать сообщение об ошибке, которое вы получаете.

            <cfquery datasource="#application.datasource#" name="MemberTypeEmails">
                Select c.EmailAddress
                from (Committee_Role_Ref as a Inner Join Committee_Member as b on a.CommitteeRoleCode=b.CommitteeRoleCode)
                    Inner Join Contact as c on b.ContactID=c.ContactID
                Where #ReReplace(l_where, "\'\'", "'", "ALL")#
                    AND b.CommitteeID=#attributes.CommitteeID#
                    -- AND a. or b. ActiveFlag goes here 
                    AND a.ActiveFlag = 'Y'
            </cfquery>
...