2012-10-30 14 views
5

मैं SELECT स्टेटमेंट के परिणाम को कई चरों में संग्रहीत करना चाहता हूं।एकाधिक @ variables में खोजें MySQL

मुझे पता है कि इस क्वेरी का परिणाम हमेशा 6 अलग पंक्तियों से 6 ints लौटाएगा।

मैं निम्नलिखित कोड का उपयोग कर की कोशिश की है:

SELECT id INTO @photo1, @photo2, @photo3, @photo4, @photo5, @photo6 
FROM album WHERE uploaded = @time AND scene_id = NEW.id; 

album एक टेबल है। uploadedalbum में एक फ़ील्ड है। scene_idalbum में एक फ़ील्ड है। idPRIMARY_KEYalbum है।

मैंने पढ़ा है कि चर की संख्या फ़ील्ड की संख्या के बराबर होनी चाहिए। जो उपर्युक्त कथन में स्पष्ट रूप से मामला नहीं है।

इस बात को ध्यान में रखते हुए, मैं इस समस्या को कैसे दूर करूंगा?

यह कोड एक MySQL ट्रिगर के भीतर उपयोग किया जा रहा है।

संपादित करें: अनुरोध के अनुसार प्रासंगिक तालिका स्कीमा:

person -- name of table 
id | approved -- id is PK 

album -- name of table 
id | uploaded | scene_id -- id is PK 

उत्प्रेरक 1

+0

आपको इस डेटाबेस को चलाने के लिए आप जिस भाषा का उपयोग कर रहे हैं उसे पोस्ट करना होगा। यदि मैं जो चाहता हूं उस पर स्पष्ट हूं, तो आप इसे एक ही चयन में नहीं कर सकते हैं। – climbage

+0

मैं इसे एक MySQL ट्रिगर में बना रहा हूं। धन्यवाद –

+0

डर मैं पूछता हूं कि आप चर में डेटा क्यों चाहते हैं? यदि आपको बाद में डाले गए/हटाए गए डेटा के साथ कुछ भी करने की ज़रूरत है, तो फिर 'OLD'/'NEW' तालिकाओं से सीधे क्यों नहीं चुनें? – Bridge

उत्तर

8

0 से approved के परिवर्तन पर निकाल दिया जाता है आप एक ही मेज के साथ शामिल होने और सुनिश्चित करें कि प्रत्येक में शामिल होने के एक प्रदान करेगा कर सकते हैं नई आईडी, जैसे कुछ (जैसे दो आईडी के लिए है, लेकिन आप बिंदु मिल जाएगा।):

SELECT a1.id, a2.id INTO @photo1, @photo2 
FROM album a1 
inner join album a2 on a2.scene=a1.scene and a2.upload=a1.upload and a2.id>a1.id 
WHERE a1.uploaded = @time AND a1.scene_id = NEW.id; 

एक पूरा एसक्यूएल और परीक्षण मामले के लिए SqlFiddle देखें।

+0

धन्यवाद। लेकिन मुझे त्रुटि # 1415 मिली - एक ट्रिगर से परिणाम सेट वापस करने की अनुमति नहीं है। '@ फोटो 1, @ फोटो 2, @ फोटो 3, @ फोटो 4, @ फोटो 5, @ फोटो 6;' त्रुटि का कारण बन रहा है। कोई विचार? –

+0

@ रिओमायर कुछ और है, आपको अपने ट्रिगर कोड बॉडी को प्रदान करने की आवश्यकता है। – dan

+0

मुझे यह त्रुटि भी मिल रही है; # 1235 - MySQL का यह संस्करण अभी तक 'एक ही कार्य समय के साथ एकाधिक ट्रिगर्स और एक तालिका के लिए ईवेंट' का समर्थन नहीं करता है। –

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