вывод в запросе (ColdFusion) - PullRequest
       0

вывод в запросе (ColdFusion)

0 голосов
/ 21 февраля 2011

Интересно, можно ли поместить выходные данные в запрос, например, у меня есть запрос:

<cfquery name="get_search_results" datasource="#dsn3#">SELECT * FROM SERVICE_GUARANTY_NEW WHERE SERIAL_NO = #get_service.PRO_SERIAL_NO#</cfquery>

и вывод:

<cfoutput query="get_service">#get_service.PRO_SERIAL_NO#</cfoutput>

как вы можете видеть, я вставил вывод в запрос, и он не работает, как я могу правильно его указать? спасибо за помощь!

на всякий случай запроса вывода get_service:

<cfquery name="get_service" datasource="#dsn3#">
    SELECT * FROM SERVICE WHERE SERVICE_ID = #attributes.action_id#
</cfquery>

Ответы [ 2 ]

1 голос
/ 21 февраля 2011

Чтобы ответить на ваш вопрос: вы должны использовать cfqueryPARAM для этого.Если тип Serial_NO Varchar, он будет выглядеть примерно так:

<cfquery name = "get_search_results" dataSource = "#dsn3#">
    SELECT * 
    FROM SERVICE_GUARANTY_NEW
    WHERE SERIAL_NO = <cfqueryPARAM value = "#get_service.PRO_SERIAL_NO#"
    CFSQLType = 'CF_SQL_VARCHAR'> 
</cfquery>

Но я думаю, что лучше объединить два SQL-запроса "get_search_result" и "get_service" в один sql:

SELECT *
FROM SERVICE_GUARANTY_NEW
WHERE SERIAL_NO IN (
  SELECT PRO_SERIAL_NO 
  FROM SERVICE 
  WHERE SERVICE_ID = #attributes.action_id#
)

Использование подзапроса быстрее, чем проблемное повторное использование результата одного запроса в новом запросе.

0 голосов
/ 21 февраля 2011

Я думаю, вы хотите попробовать что-то вроде этого:

<cfquery name="get_service" datasource="#dsn3#">
    SELECT #carrythroughVar# as carryThroughVar, * FROM SERVICE WHERE SERVICE_ID = #attributes.action_id#
</cfquery>

аналогично тому, как вы можете select 1

это не проверено.

НТН

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...