Запрос запросов, не извлекающих данные с несоответствиями типов данных - PullRequest
0 голосов
/ 16 июля 2011

У моего клиента есть две базы данных, одна для множества мест и другая база данных для каждой другой таблицы (почему я не знаю). Я работаю за счет Coldfusion, и из того, что я могу сказать, мне нужно сделать запрос запросов, так как 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> 

Ответы [ 3 ]

2 голосов
/ 16 июля 2011

Хотя CF не позволяет использовать несколько источников данных в теге came cfquery, вы должны по-прежнему иметь возможность объединять базы данных. Смотри: http://www.google.com/search?q=join+across+databases

Предполагая, что это сработает для вас, это выглядит намного проще, чем 2 отдельных запроса и QoQ поверх этого.

1 голос
/ 16 июля 2011

Я бы и поддержал ответ Чарли, но чтобы исправить существующий код, вы можете попробовать заменить

'parseInt(get_restrauntInfo.cli_number)'

с

CAST( get_restrauntInfo.cli_number AS INTEGER )

в предложении WHERE.

0 голосов
/ 17 июля 2011

Так что я закончил тем, что использовал 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...