0

私のクライアントには 2 つのデータベースがあります。1 つは場所の latlng 用で、もう 1 つは他のすべてのテーブル用のデータベースです (理由はわかりません)。CF では同じ cfquery タグで複数のデータソースを使用できないため、coldfusion を使用しています。なんらかの理由で、latlng テーブルの主キーは文字列で、もう一方のテーブルは double です (これもわかりません)。しかし、私が今持っているクエリでは、データを取得していないことをテストしています。私はまだ 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は、来た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 に答える