2011-07-16 108 views
0

我的客戶端有兩個數據庫,一個用於地點位置,另一個用於其他數據庫(爲什麼我不知道)。我正在從ColdFusion工作,並從我可以告訴我需要做一個查詢查詢,因爲CF不允許在同一個cfquery標籤中的多個數據源。現在由於某種原因,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> 

回答

1

我會的,並已調派查理的答案,但修復現有的代碼,你可以嘗試用

CAST(get_restrauntInfo.cli_number AS INTEGER) 

您的WHERE子句中取代

'parseInt(get_restrauntInfo.cli_number)' 

+0

您是否認爲QoQ會更有效率,然後我的答案如下或者是基本上做同樣的事情? – rajh2504

+1

是的,因爲在你的回答中,你正在爲第一個查詢循環的每次迭代進行另一次完整的數據庫調用。通過QoQ,只有2個數據庫調用。但是如果你堅持查理的建議,你將只有一個查詢,這是理想的解決方案。 – CfSimplicity

+0

好的謝謝你的澄清! – rajh2504

2

雖然CF不允許多個數據源中傳來CFQUERY標籤,你應該仍然能夠跨數據庫加入。請參閱: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>