有两个查询,并且无法使它们正常工作,它们的最终产品会给出重复的项目,这里是查询:
第一次查询
<cfquery name="get_partner_all" datasource="#dsn#">
SELECT
C.COMPANY_ID,
C.FULLNAME,
CP.MOBILTEL,
CP.MOBIL_CODE,
CP.IMCAT_ID,
CP.COMPANY_PARTNER_TEL,
CP.COMPANY_PARTNER_TELCODE,
CP.COMPANY_PARTNER_TEL_EXT,
CP.MISSION,
CP.DEPARTMENT,
CP.TITLE,
CP.COMPANY_PARTNER_SURNAME,
CP.COMPANY_PARTNER_NAME,
CP.PARTNER_ID,
CP.COMPANY_PARTNER_EMAIL,
CP.HOMEPAGE,
CP.COUNTY,
CP.COUNTRY,
CP.COMPANY_PARTNER_ADDRESS,
CP.COMPANY_PARTNER_FAX,
CP.RECORD_DATE,
CP.MEMBER_CODE,
CC.COMPANYCAT
<cfif isdefined('attributes.report_sort') and attributes.report_sort is 2>
,CCD.SITE_DOMAIN
</cfif>
FROM
COMPANY_PARTNER CP,
COMPANY C,
COMPANY_CAT CC
<cfif isdefined('attributes.report_sort') and attributes.report_sort is 2>
,COMPANY_CONSUMER_DOMAINS CCD
</cfif>
WHERE
C.COMPANY_ID = CP.COMPANY_ID
AND C.COMPANYCAT_ID = CC.COMPANYCAT_ID
<cfif isDefined('attributes.search_status') and len(attributes.search_status)>
AND CP.COMPANY_PARTNER_STATUS = <cfqueryparam cfsqltype="cf_sql_integer" value="#attributes.search_status#">
</cfif>
<cfelseif isDefined("attributes.comp_cat") and len(attributes.comp_cat)>
AND C.COMPANYCAT_ID = <cfqueryparam cfsqltype="cf_sql_integer" value="#attributes.comp_cat#">
</cfif>
<cfif isdefined('attributes.report_sort') and attributes.report_sort is 2>
AND CP.PARTNER_ID = CCD.PARTNER_ID
AND CCD.SITE_DOMAIN = 'www.projedepo.com'
</cfif>
</cfquery>
第二次查询:
<cfquery name="get_money" datasource="#dsn2#">
SELECT BAKIYE,BORC,ALACAK FROM COMPANY_REMAINDER_MONEY WHERE COMPANY_ID = #company_id#
</cfquery>
当我尝试定义例如C.COMPANY_ID = CRM.COMPANY_ID时它显示了一些重复的项目,我知道我应该使用像JOIN和其他东西的smth,但是无法理解怎么做:)需要帮助,谢谢大家的帮助!
这是加入的查询,仍然重复变量:
<cfquery name="get_partner_all" datasource="#dsn#">
SELECT DISTINCT
C.COMPANY_ID,
C.FULLNAME,
CP.MOBILTEL,
CP.MOBIL_CODE,
CP.IMCAT_ID,
CP.COMPANY_PARTNER_TEL,
CP.COMPANY_PARTNER_TELCODE,
CP.COMPANY_PARTNER_TEL_EXT,
CP.MISSION,
CP.DEPARTMENT,
CP.TITLE,
CP.COMPANY_PARTNER_SURNAME,
CP.COMPANY_PARTNER_NAME,
CP.PARTNER_ID,
CP.COMPANY_PARTNER_EMAIL,
CP.HOMEPAGE,
CP.COUNTY,
CP.COUNTRY,
CP.COMPANY_PARTNER_ADDRESS,
CP.COMPANY_PARTNER_FAX,
CP.RECORD_DATE,
CP.MEMBER_CODE,
CC.COMPANYCAT,
CRM.*
<cfif isdefined('attributes.report_sort') and attributes.report_sort is 2>
,CCD.SITE_DOMAIN
</cfif>
FROM
COMPANY_PARTNER CP,
COMPANY C,
COMPANY_CAT CC,
#dsn2_alias#.COMPANY_REMAINDER_MONEY CRM
<cfif isdefined('attributes.report_sort') and attributes.report_sort is 2>
,COMPANY_CONSUMER_DOMAINS CCD
</cfif>
WHERE
C.COMPANY_ID = CP.COMPANY_ID
AND C.COMPANYCAT_ID = CC.COMPANYCAT_ID
AND C.COMPANY_ID=CRM.COMPANY_ID
<cfif isDefined('attributes.search_status') and len(attributes.search_status)>
AND CP.COMPANY_PARTNER_STATUS = <cfqueryparam cfsqltype="cf_sql_integer" value="#attributes.search_status#">
</cfif>
<cfif isDefined("attributes.cpid") and len(attributes.cpid)>
AND C.COMPANY_ID = <cfqueryparam cfsqltype="cf_sql_integer" value="#attributes.cpid#">
<cfelseif isDefined("attributes.comp_cat") and len(attributes.comp_cat)>
AND C.COMPANYCAT_ID = <cfqueryparam cfsqltype="cf_sql_integer" value="#attributes.comp_cat#">
</cfif>
<cfif isdefined('attributes.report_sort') and attributes.report_sort is 2>
AND CP.PARTNER_ID = CCD.PARTNER_ID
AND CCD.SITE_DOMAIN = 'www.projedepo.com'
</cfif>
</cfquery>
答案 0 :(得分:0)
查询没有错,它只显示COMPANY_PARTNER和COMPANY_CONSUMER_DOMAINS的所有(有效)组合。如果你想要,你可以在最后添加ORDER BY
:
ORDER BY C.COMPANY_ID,
CP.PARTNER_ID,
CRM.DOMAINID --- some field in table CRM
或
ORDER BY C.COMPANY_ID,
CRM.DOMAINID --- some field in table CRM
CP.PARTNER_ID,
或者您喜欢的任何其他顺序,请说:
ORDER BY C.COMPANY_NAME
C.COMPANY_ID,
CP.COUNTRY,
CP.COUNTY,
CP.TITLE,
CP.PARTNER_ID,
我看到此查询可以显示的另外两种方式(其他可能有趣的)数据:
1 更改(在SELECT列表中)CRM.*
到Count(*) AS ConsumerDomainsCount
并在最后添加GROUP BY CP.COMPANY_ID, CP.PARTNER_ID
。
2 镜像操作,GROUP BY CRM.COMPANY_ID, CRM.DOMAINID
并删除任何CP.*
并仅保留Count(*) AS PartnersCount
如果您使用GROUP BY
,还可以使用其他聚合函数,例如SUM()
,AVG()
,MIN()
,MAX()
,如果您有可以使用的字段添加(数字字段)或比较(如日期)。
答案 1 :(得分:-1)
这是否与使用DISTINCT
关键字一样简单?
<cfquery name="get_money" datasource="#dsn2#">
SELECT DISTINCT COL1, COL2 ... FROM ...
</cfquery>
此外 - 您应该使用<cfqueryparam />
来避免SQL注入漏洞。