2011-07-16 12 views
0

クライアントには、場所の潜在性と他のすべてのテーブルの別のデータベースの2つのデータベースがあります(わからない理由)。私はcoldfusionの作業に取り組んでいます。CFは同じcfqueryタグ内に複数のデータソースを許可していないため、クエリのクエリを実行する必要があることを私は理解できます。今や何らかの理由で、latlngテーブルの主キーが文字列で、もう1つのテーブルが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> 

答えて

1

私はだろう、とチャーリーの答えを出向しているが、既存のコードを修正するには、あなたのWHERE句で

CAST(get_restrauntInfo.cli_number AS INTEGER) 

'parseInt(get_restrauntInfo.cli_number)' 

を交換してみてください。

+0

あなたはQoQがより効率的で、私の答えは以下のようになると思いますか、それとも本質的に同じことをしていますか? – rajh2504

+1

はい、あなたの答えでは、最初のクエリループの繰り返しごとに別の完全なデータベース呼び出しを行うためです。 QoQでは、データベース呼び出しは2つしかありません。しかしチャーリーの助言を忍耐すれば、理想的なソリューションであるクエリーが1つしかありません。 – CfSimplicity

+0

清算のために大丈夫! – rajh2504

2

のcfqueryタグを来以内CFは、複数のデータソースを許可していませんが、あなたははまだデータベース間で参加することができるはずです。参照してください:http://www.google.com/search?q=join+across+databases

それはあなたのために働くだろうと仮定すると、それは2つの別のクエリとそれの上にQoQよりはるかに簡単に思えます。

+0

悲しいことに、私はすでにColdFusionでタグデザインを回避しようとしていませんでした。 – rajh2504

+1

クエリタグ間で有効なSQLである限り、ColdFusionは気にしないでください。何がうまくいかなかったかについて詳しく説明できますか?エラーメッセージは何ですか? – charliegriefer

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>