【问题标题】:Query of queries not extracting data with data type mismatches查询未提取数据类型不匹配的数据的查询
【发布时间】:2011-07-16 16:49:44
【问题描述】:

我的客户有两个数据库,一个用于地点纬度,另一个数据库用于其他所有表格(为什么我不知道)。我正在处理冷融合,据我所知,我需要对查询进行查询,因为 CF 不允许在同一个 cfquery 标记中使用多个数据源。现在由于某种原因,latlng 表中的主键是一个字符串,而另一个表是一个双精度表(同样我不知道为什么)。但是在我现在正在测试的查询中,我没有提取任何数据。我仍在尝试了解 QoQ 是如何工作的,但我想我已经大致了解了。谢谢!

<cfquery name="get_restrauntinfo" datasource="#listings#" dbtype="odbc">
SELECT *
FROM listings_new
WHERE pub_code = 'GridR'
</cfquery>

<cfquery name="get_latlng" datasource="#latlng#" dbtype="odbc">
SELECT member_id, mlat, mlong
FROM maps
</cfquery> 

<cfquery name="join_rest" dbtype="query">
SELECT *
FROM get_latlng, get_restrauntInfo 
WHERE 'parseInt(get_restrauntInfo.cli_number)' = get_latlng.member_id
</cfquery> 

【问题讨论】:

    标签: sql coldfusion qoq


    【解决方案1】:

    虽然 CF 不允许在 come cfquery 标记中使用多个数据源,但您应该仍然能够跨数据库连接。见:http://www.google.com/search?q=join+across+databases

    假设这对你有用,它似乎比 2 个单独的查询和一个 QoQ 简单得多。

    【讨论】:

    • 遗憾的是,我已经尝试过了,Coldfusion 不喜欢我尝试绕过他们的标签设计。
    • 只要查询标签之间的 SQL 是有效的,ColdFusion 就不会在意。你能详细说明什么不起作用吗?错误信息是什么?
    【解决方案2】:

    我愿意,并且已经附议查理的回答,但是要修复您现有的代码,您可以尝试替换

    'parseInt(get_restrauntInfo.cli_number)'
    

    CAST( get_restrauntInfo.cli_number AS INTEGER )
    

    在您的 WHERE 子句中。

    【讨论】:

    • 你认为 QoQ 会比我在下面的回答更有效率吗?或者本质上是在做同样的事情吗?
    • 是的,它会的,因为在您的回答中,您正在为第一个查询循环的每次迭代进行另一个完整的数据库调用。对于 QoQ,只有 2 个数据库调用。但是,如果您坚持查理的建议,您将只有一个查询,这是理想的解决方案。
    【解决方案3】:

    所以我最终做的是使用 CFLOOP,而我可能会进行更多查询,然后我必须让它工作!代码如下:

    <cfloop query="get_restrauntinfo">
        <cfquery name="get_latlng" datasource="#latlng#" dbtype="odbc">
            SELECT member_id, mlat, mlong
            FROM maps
            WHERE member_id = '#get_restrauntinfo.cli_number#'
        </cfquery>
        <cfset title = #get_restrauntinfo.publish_as#>
        var content = addContent(#get_restrauntinfo#);
        <cfoutput query="get_latlng">
            var #toScript(title, "title")#;
            addMarker(#get_latlng.mlat#,#get_latlng.mlong#, title, content, map);
        </cfoutput> 
    </cfloop>
    

    【讨论】:

      猜你喜欢
      • 2011-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多