Как Вы делаете добавленную строку из QueryAddRow () первой строкой результата запроса?

Я произвожу запрос, но потребность указать первую строку результата. Я добавляю строку с QueryAddRow () и устанавливаю значения с QuerySetCell (). Я могу создать прекрасную строку, я могу добавить содержание к той прекрасной строке. Если я оставляю аргумент в пользу номера строки прочь QuerySetCell () затем, все это работает отлично как последний результат запроса, когда произведено. Однако мне нужен он, чтобы быть первой строкой запроса, но когда я пытаюсь установить атрибут строки с QuerySetCell, это просто перезаписывает первую возвращенную строку от моего запроса (т.е. мой QueryAddRow () заменяет первую запись от моего запроса). То, что я в настоящее время имею, устанавливает переменную от recordCount и располагает вывод, но должен быть действительно простой способ сделать это, что я просто не добираюсь. Это кодовые наборы значение строки к 1, но перезаписи первая возвращенная строка от запроса.

<cfquery name="qxLookup" datasource="#application.datasource#">
    SELECT xID, xName, execution
    FROM table
</cfquery>

<cfset QueryAddRow(qxLookup)/>
<cfset QuerySetCell(qxLookup, "xID","0",1)/>
<cfset QuerySetCell(qxLookup, "xName","Delete",1)/>
<cfset QuerySetCell(qxLookup, "execution", "Select this to delete",1)/>

<cfoutput query="qxLookup">
    <tr>
        <td>
            <a href="##" onclick="javascript:ColdFusion.navigate('xSelect/x.cfm?xNameVar=#url.xNameVar#&xID=#qxLookup.xID#&xName=#URLEncodedFormat(qxLookup.xName)#', '#xNameVar#');ColdFusion.Window.hide('#url.window#')">#qxLookup.xName#</a>
        </td>
        <td>#qxLookup.execution#</td>
    </tr>
</cfoutput>

Спасибо за любую справку.

8
задан gevorg 12 June 2016 в 21:42
поделиться

3 ответа

Я бы добавил в исходный запрос какой-то столбец порядка сортировки, задав ему фиксированное значение 1 .

<cfquery name="qxLookup" datasource="#application.datasource#">
SELECT xID, xName, execution, 1 as sortorder
FROM table
</cfquery>

Установите значение этого столбца в синтетической строке на значение 0 .

<cfset QueryAddRow(qxLookup)>
...
<cfset QuerySetCell(qxLookup, "sortorder", "0",1)>

Затем используйте запрос запросов, чтобы изменить порядок набора записей по столбцу sortorder .

<cfquery name="qxLookup" dbtype="query">
select xid, xname, execution
from qxLookup
order by sortorder
</cfquery>
6
ответ дан 5 December 2019 в 21:16
поделиться

Ну, я уже имел дело с этой проблемой раньше, для меня ответ состоял в том, чтобы иметь 2 отдельных запроса.

1-й - это ваш обычный запрос, 2-й - это запрос запросов, затем выполните их объединение, при этом qofq будет выше обычного запроса, и это должно дать вам результаты в том порядке, в котором вы хотите.

Примерно так:

<cfquery name="table_a_results" datasource="">
select a, b, c
from table_a
</cfquery>

cfset table_b = querynew("a, b, c")
cfset temp = queryaddrow("table_b")
cfset temp = querysetcell(table_b,10)
cfset temp = querysetcell(table_b,20)
cfset temp = querysetcell(table_b,30)

<cfquery name="final_query" dbtype="query">
select a, b, c
from table_b
union
select a, b, c
from table_a_results
</cfquery>

Затем с помощью этого инструмента вы можете размещать запросы в любом порядке, но не забудьте использовать порядок по тегу, чтобы изменить порядок ...

1
ответ дан 5 December 2019 в 21:16
поделиться

Просто альтернативный вариант, но вы можете убрать ColdFusion из картины и сделать это исключительно в SQL, используя что-то вроде (например, в oracle)

select 'myinsertedvalue' from dual объединение select myrealvalues from mutable

Вы можете объединить с колонкой сортировки Kens, чтобы получить полное упорядочивание. Предполагается, что вы получаете основной запрос из БД!

0
ответ дан 5 December 2019 в 21:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: