दो तालिकाओं की रचना कैसे करें


0

मैं एक तालिका {(y, z)} कैसे उत्पन्न कर सकता हूं जो दो अन्य अलग-अलग तालिकाओं {(x, y)} और {(y, z)} की रचना है।

मेरे पास दो 2-कॉलम टेबल हैं, RelOne और RelTwo। प्रत्येक तालिका की पंक्तियाँ कई-कई संबंधों के आदेशित जोड़े का प्रतिनिधित्व करती हैं।

RelOne है

(a, 1)  
(b, 1)  
(c, 1)  
(a, 2)   
(b, 2)

RelTwo है

(1, East)  
(1, West)  
(2, East)   
(2, South)  
(2, West)  
(2, North)  

तालिका के लिए कोई प्राकृतिक कुंजी नहीं हैं।

मैं एक तीसरी तालिका तैयार करना चाहता हूं जो कि RelOne और RelTwo की संरचना है

(a, East)  
(b, East)  
(c, East)  
(a, West)  
(b, West)  
(c, West)  
(a, East)  
(a, South)   
(a, West)   
(a, North)  
(b, East)   
(b, South)   
(b, West)   
(b, North)

ये मूल्य एक सरलीकरण हैं; वास्तविक तालिकाओं में सैकड़ों पंक्तियाँ होती हैं।

जवाबों:


1

पहली नज़र में, यह मूर्खतापूर्ण सरल लग रहा था, लेकिन ... ऐसा नहीं है।

मुझे लगता है कि एक संभावित समाधान एक कम क्रॉस-उत्पाद है - यदि आप गणनाओं को देखते हैं, तो RelOne में 3 '1' और 2 '2' हैं, और RelTwo में 2 '1' और 4 '2' हैं; परिणाम में 3 * 2 '1' + 2 * 4 '2' = 13 प्रविष्टियाँ हैं। स्पष्ट रूप से थकाऊ, दोनों तालिकाओं में सभी 1, 2, 3, आदि की गिनती को छोड़कर इस कुल गणना का उत्पादन करने का कोई सरल तरीका नहीं है।
इसलिए (और मैं किसी भी मैक्रो / VBA / 3rdParty समाधान को छोड़ दूंगा), मैं निम्नलिखित दृष्टिकोण की सिफारिश करता हूं:

  1. तालिकाओं के बीच एक क्रॉस-उत्पाद पर विचार करें - RelTwo के प्रत्येक प्रविष्टि के साथ RelOne से प्रत्येक प्रविष्टि को मिलाएं। जो आपको N * M लाइन्स देगा (यहाँ: 5 * 6 = 30)।
  2. उन क्रॉस उत्पादों में से प्रत्येक में एक सूत्र रखो जो सत्यापित करता है कि कुंजी मेल खाती है या नहीं
  3. आपको N * M लाइन्स के साथ एक लंबी टेबल मिलेगी, और एक दूसरा कॉलम जिसमें कुंजियाँ या FALSE होगी, अगर कुंजियाँ मेल खाती हैं तो उसके आधार पर
  4. सभी FALSE को छाँटें और छोड़ें।

व्यावहारिक निष्पादन के लिए, एन * एम लाइनों में सूत्रों रखा, और का उपयोग करें ROW()%Nऔर INT(ROW()/N)दो तालिकाओं में अनुक्रमित उत्पन्न करने के लिए - उन दो सब एन * एम संयोजन के माध्यम से पुनरावृति होगी। बाकी सब सीधा होना चाहिए यदि आप समझते हैं कि मैं क्या वर्णन करता हूं, और आप सूत्रों के साथ अपना रास्ता जानते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.