来自两个表的查询的CFOUTPUT

时间:2013-05-09 17:51:29

标签: mysql sql coldfusion coldfusion-8

这是我正在使用的代码 -

<CFOUTPUT>

<CFQUERY NAME="getParser" DATASOURCE="LibraryDB" DBTYPE="ODBC">
select name
from parser_acronym 
where init = '#source#'
</CFQUERY>


<CFQUERY NAME="getUAcode" DATASOURCE="LibraryDB" DBTYPE="ODBC"> 
SELECT name FROM useragent 
WHERE Logs.csuseragent contains '#%useragent.string%#' </CFQUERY>
</CFQUERY>

<CFSET src = "#getParser.name#">
<CFSET ua = "#getUAcode.name#">

<CFIF (DailyCount MOD 2) EQ 0>
<CFSET via = '<td style="background-color: DBEFB6;">#src#<br><font color="blue">#ua#</font></td>'>
<CFELSE>
<CFSET via = '<td>#src#<br><font color="blue">#ua#</font></td>'>
</CFIF>
</CFOUTPUT>

我使用getParser查询从表中提取数据。这显示为#src# - 这可以正常工作。

现在,我需要添加更多信息,这将显示在#ua#(useragent)字段中。我需要这个查询来理解当我的日志表包含来自useragent表的'string'时,它将显示与csuseragent表中的名称一致的名称。所以我从两个表中提取查询,WHERE必须是'包含'。这甚至可能吗?

以下是我的表格示例 -

使用费表 -

NAME | STRING

IE | MSIE
FFox |火狐
iPad | ipad的

日志表有一个csuseragent是通常的UA字符串,里面填充了大量文本,但在其中有定义的单词,告诉我们用户正在浏览的内容 -

CSUSERAGENT
etcetc_msie
etcetc_firefox
etcetc_ipad
etcetc_msie
etcetc_msie

2 个答案:

答案 0 :(得分:1)

跟随我有点麻烦,但我认为这就是你想要的:

<cfquery name="getUACode">
    SELECT UA.name AS UA, PA.name AS src
    FROM parser_acronym PA
    LEFT JOIN Useragent UA ON PA.name LIKE '%' + UA.name + '%'
    WHERE PA.init = <cfqueryparam value="#source#" cfsqltype="cf_sql_varchar">
</cfquery>

<cfoutput>
    <cfif NOT dailycount MOD 2>
        <cfset via = '<td class="myBgColor">#src#<br><span class="blueColor">#ua#</span></td>'>
    <cfelse>
        <cfset via = '<td>#src#<br><span class="blueColor">#ua#</span></td>'>
    </cfif>
</cfoutput>

答案 1 :(得分:0)

以下代码是您答案的开始。由于您没有为getUA查询定义查询,因此我不确定您的标准和变量是什么以及它们来自何处。

一般来说,我不理解变量UA。

<CFQUERY NAME="getParser" DATASOURCE="LibraryDB" DBTYPE="ODBC">
select name
from parser_acronym 
where init = <cfqueryparam cfsqltype="cf_sql_varchar" value="#source#">
</CFQUERY>

<CFQUERY NAME="getUAcode" DATASOURCE="LibraryDB" DBTYPE="ODBC"> 
SELECT name 
FROM useragent 
WHERE Logs.csuseragent like <cfqueryparam cfsqltype="cf_sql_varchar" value="%#useragent.string#%#">
</CFQUERY>    

<CFSET src = "#getParser.name#">
<CFSET ua = "#getUAcode.name#">


<CFOUTPUT>
    <CFIF (DailyCount MOD 2) EQ 0>
        <CFSET via = '<td style="background-color: DBEFB6;">#src#<br><font color="blue">#ua#</font></td>'>
    <CFELSE>
        <CFSET via = '<td>#src#<br><font color="blue">#getUacode(ua)#</font></td>'>
    </CFIF>
</CFOUTPUT>