2010-09-07 11 views

उत्तर

24

आप इसे cosole पर कोशिश कर सकते:

 
script/console # rails 2 
rails console # rails 3 

कंसोल में कोड दर्ज करें और आपको मिलता है:

 
irb> result = ActiveRecord::Base.connection.execute("select 'ABC'") 
=> [{0=>"ABC", "'ABC'"=>"ABC"}] 

तो यह आप इसे

result.first[0] 
# or 
result.first['ABC'] 

result.first साथ मिल केवल पहली पंक्ति देता है, न कि पहले मूल्य। इस पंक्ति में संख्यात्मक और नामित पहुंच के साथ हैश शामिल है।

+1

धन्यवाद जिगॉक्स। परिणाम के लिए '[{0 =>" एबीसी "," 'एबीसी' "=>" एबीसी "}] ', 2" एबीसी "क्यों है? और, '0' और पहले '' 'एबीसी' 'का अर्थ क्या है? उनमें से एक स्तंभ नाम है? जब मैं MySQL क्वेरी ब्राउज़र में क्वेरी करता हूं, तो कॉलम नाम 'एबीसी' होता है और मान पहली पंक्ति है 'एबीसी'। – ohho

+2

परिणाम '# ' '{{0 =>" एबीसी "," 'एबीसी' "=>" एबीसी "}] के बजाय' 'है। क्या देता है? – ohho

+0

* "क्यों 2" एबीसी है? और, 0 और पहले "एबीसी" का अर्थ क्या है?"* कॉलम नंबर" 1 "द्वारा एक पहुंच योग्य है और कॉलम नाम" एबीसी "द्वारा एक पहुंच योग्य है। – jigfox

19

प्रयास करें:

result = ActiveRecord::Base.connection.select_value("select 'ABC'") 

मैं अंतर्निहित डेटाबेस कोड अगर साथ चारों ओर खिलवाड़ सलाह नहीं होगा आपको जरूरत नहीं है

+0

धन्यवाद शैडवेल। मैं jigfox को उत्तर क्रेडिट देता हूं क्योंकि मैं एक MySQL क्वेरी से सामान्य रिटर्न संरचना की तलाश में हूं, एक मूल्य तक सीमित नहीं है। आपके लिए एक 'उपयोगी' क्रेडिट ;-) – ohho

+1

500k + रिकॉर्ड के साथ आप वास्तव में गति के कारण सभी का चयन नहीं कर सकते हैं। यह आमतौर पर कनेक्शन का उपयोग करने का कारण होता है। निष्पादित करें ताकि वे संसाधित होने वाले एसक्यूएल को अनुकूलित कर सकें। –

19

.execute के बजाय आप .select_all का उपयोग कर सकते हैं, यह परिणाम के साथ एक सरणी लौटाएगा।

तो का उपयोग करें:

ActiveRecord::Base.connection.select_all("select 'ABC'") 
+1

यह एक ActiveRecord :: परिणाम देता है। – Donato

0

मैं कुछ डेटा जहां स्थिति जो closed, in progress, आदि जैसे मान नाम के एक स्तंभ है के साथ एक मेज है ..

तो जब मैं करना कोड के रूप में:

: ActiveRecord::Base.connection.select_all "select DISTINCT Status from tickets"

मैं निम्नलिखित मिल

StatusclosedStatusin progressStatusassignedStatusnewStatussolved

समस्या यह है कि कॉलम नाम प्रत्येक मान से पहले जोड़ा जाता है। मैं अकेले मूल्य कैसे प्राप्त करूं?

+1

'ActiveRecord :: Base.connection.select_values" का उपयोग कर इसे हल करें टिकटों से DISTINCT स्थिति का चयन करें "' विभिन्न के लिए इस लिंक को चेक करें 'कनेक्शन। 'विधियां: http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/DatabaseStatements.html –

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