2009-05-22 6 views
10

मैं एक तालिका में शामिल होने के लिए MYSQL में एक गतिशील क्वेरी बनाने की कोशिश कर रहा हूं जिसका नाम किसी अन्य तालिका पर फ़ील्ड मान के रूप में संग्रहीत किया गया है:MYSQL एक तालिका में शामिल होता है जिसका नाम किसी अन्य तालिका पर फ़ील्ड मान के रूप में संग्रहीत किया जाता है

SELECT * FROM CATEGORIES 
INNER JOIN CATEGORISATIONS ON CATEGORISATIONS.id = CATEGORIES.fk_categorisation 
INNER JOIN [CATEGORISATIONS.nom_table] LV_REGIONS ON LV_REGIONS.id = CATEGORIES.valeur 

कोई जवाब ?!

+0

इस क्षेत्र का उपयोग है कि CATEGORISATIONS.nom_table के बीच एक संबंध तालिका बनाने के बिना पूरे स्कीमा की तालिका के किसी भी उल्लेख कर सकते हैं इसमें से प्रत्येक – Cedric

उत्तर

1

मुझे लगता है कि आप तालिका नाम को हल करने के लिए "[CATEGORISATIONS.nom_table]" प्राप्त करने का प्रयास कर रहे हैं।

उस स्थिति में आप वहां एक सबक्वायरी का उपयोग करने का प्रयास कर सकते हैं जो केवल 1 तालिका नाम (इसलिए 1 पंक्ति और 1 कॉलम वाला परिणाम) को हल करेगा। मुझे यकीन नहीं है कि MySQL वहां एक टेबल के लिए एक स्ट्रिंग नाम स्वीकार करेगा, लेकिन यह एक कोशिश के लायक है।

2

मेरी पहली सिफारिश यह है कि जो भी स्कीमा डिज़ाइन किया गया हो और उन्हें डेटाबेस डिज़ाइन के संबंध में अच्छी किताब दें।

वहां से, आप दो दिशाओं में से एक का नेतृत्व कर सकते हैं: पहला, एक ही नियम तालिका में CATEGORIZATIONS.nom_table द्वारा नामित अलग-अलग तालिकाओं को लोड करके स्कीमा में मौजूद गड़बड़ी को पूर्ववत करना है जिसे आप सीधे पूछ सकते हैं।

वैकल्पिक रूप से, आपको दूसरी INNER जॉइन करने के लिए यूनियन क्वेरी बनाने के लिए पहले INNER जॉइन के परिणाम का उपयोग करके उस क्वेरी को कई टुकड़ों में तोड़ने की आवश्यकता होगी। के बारे में

1

हो सकता है कि पुरुष किसने किया यह जानते हैं कि यह वास्तव में एक अच्छा डिजाइन अभ्यास नहीं है था ... लेकिन कभी कभी आप क्या आप क्या करना चाहते करने के लिए भद्दा हैक करना है ...

से क्या मुझे पता है विषय, मुझे नहीं लगता कि आप केवल एक चयन क्वेरी के साथ इसे प्राप्त कर सकते हैं।

हो सकता है कि एक संग्रहीत proc साथ

...

1

मैं mysql तालिका मानों का उपयोग करने की कोशिश की है से पहले फ़ील्ड नाम के रूप में एक सबक्वेरी से लौटे और सफल नहीं था। मैं फ़ील्ड नाम के रूप में एक रिकॉर्डसेट मान को स्वीकार करने के लिए mysql कभी नहीं प्राप्त कर सकता था। दुर्भाग्यवश, इस कार्य को पूरा करने के लिए मुझे php का उपयोग करना पड़ा।

+1

यही वह है जो मैं किसी दिन किसी एक mysql क्वेरी के भीतर करने का तरीका दिखाता हूं। – Cedric

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

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