2010-05-31 17 views
8

मैं एक क्वेरी आउटपुट कर रहा हूं लेकिन परिणाम की पहली पंक्ति निर्दिष्ट करने की आवश्यकता है। मैं QueryAddRow() के साथ पंक्ति जोड़ रहा हूं और QuerySetCell() के साथ मान सेट कर रहा हूं। मैं पंक्ति ठीक बना सकता हूं, मैं उस पंक्ति को सामग्री में जोड़ सकता हूं। अगर मैं QuerySetCell() की पंक्ति संख्या के लिए तर्क छोड़ देता हूं तो यह आउटपुट के दौरान क्वेरी के अंतिम परिणाम के रूप में बहुत अच्छा काम करता है। हालांकि, मुझे क्वेरी की पहली पंक्ति होने की आवश्यकता है, लेकिन जब मैं क्वेरीरीटेल के साथ पंक्ति विशेषता सेट करने का प्रयास करता हूं तो यह मेरी क्वेरी से पहली बार लौटाई गई पंक्ति को ओवरराइट करता है (यानी मेरी क्वेरी AddRow() मेरी क्वेरी से पहले रिकॉर्ड को प्रतिस्थापित करता है)। मेरे पास वर्तमान में रिकॉर्डकाउंट से एक चर सेट करना है और आउटपुट की व्यवस्था करना है, लेकिन ऐसा करने का एक बहुत ही आसान तरीका होना चाहिए जिसे मैं अभी नहीं प्राप्त कर रहा हूं। यह कोड पंक्ति मान को 1 पर सेट करता है लेकिन क्वेरी से पहली लौटाई गई पंक्ति को ओवरराइट करता है।क्वेरी से परिणाम की पहली पंक्ति QueryAddRow() से एक अतिरिक्त पंक्ति कैसे बनाते हैं?

<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> 

किसी भी मदद के लिए धन्यवाद।

उत्तर

6

मैं आपकी मूल क्वेरी में किसी प्रकार का सॉर्ट ऑर्डर कॉलम जोड़ूंगा, इसे 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 स्तंभ द्वारा recordset को पुन: व्यवस्थित करने के लिए क्वेरी के- प्रश्नों का उपयोग करें।

<cfquery name="qxLookup" dbtype="query"> 
select xid, xname, execution 
from qxLookup 
order by sortorder 
</cfquery> 
+0

धन्यवाद। जो अभी मेरे पास है उससे बेहतर है। मैं वास्तव में उम्मीद कर रहा था कि मुझे कुछ आसान याद आ रहा था (जैसे QueryAddRow के लिए एक विशेषता - क्योंकि डिफ़ॉल्ट पंक्ति को अंतिम पंक्ति जोड़ना है, शायद इसे पहली पंक्ति बनाने के लिए एक विशेषता है?)। –

+0

@ जेएस - केन के सुझाव के लिए +1। AFAIK, आप कुछ भी याद नहीं कर रहे हैं और QueryAddRow केवल पंक्तियों को क्वेरी के अंत में जोड़ने की अनुमति देता है। – Leigh

+0

यह काम करता है, धन्यवाद। मैंने पंक्ति # विशेषता को छोड़ दिया और बस उन्हें अंतिम अंतिम पंक्ति के रूप में जोड़ा, फिर क्यूओक्यू को सॉर्ट करने के लिए किया। –

0

ऊपर करने के लिए बस एक विकल्प है, लेकिन आप ColdFusion तस्वीर से बाहर लेने के लिए और इस दोहरे संघ से (ओरेकल में जैसे)

चयन 'myinsertedvalue' की तरह कुछ का उपयोग कर एसक्यूएल में पूरी तरह से कर सकता है mutable

से myrealvalues ​​का चयन करें आप पूर्ण क्रम प्राप्त करने के लिए केन्स सॉर्ट कॉलम के साथ गठबंधन कर सकते हैं। मान लीजिए कि आपको डीबी से मुख्य प्रश्न मिल रहा है!

+0

इसके लिए धन्यवाद। मैं एक ही प्रश्न का उपयोग कुछ अलग-अलग स्थानों पर करता हूं और हमेशा ऐसा करने की ज़रूरत नहीं है, इसलिए मुझे लगा कि चूंकि मुझे पहले से ही यह याद आया था कि सीएफ रूट जा रहा है और डीबी को 1 कम कॉल होगा। –

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> 

तो इस उपकरण का उपयोग आप अपनी पसंद के किसी भी क्रम में प्रश्नों रख सकते हैं, लेकिन, टैग द्वारा आदेश का उपयोग करने के क्रम बदलने के लिए याद ...

संबंधित मुद्दे