0

我的客户有两个数据库,一个用于地点的纬度,另一个用于其他每个表的数据库(为什么我不知道)。我正在处理冷融合,据我所知,我需要对查询进行查询,因为 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> 
4

3 回答 3

2

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

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

于 2011-07-16T17:59:44.913 回答
1

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

'parseInt(get_restrauntInfo.cli_number)'

CAST( get_restrauntInfo.cli_number AS INTEGER )

在您的 WHERE 子句中。

于 2011-07-16T18:42:41.367 回答
0

所以我最终做的是使用 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-07-16T21:24:04.420 回答