क्यू लैंग्वेज - जॉइन करता है

में qभाषा, हमारे पास आपूर्ति की गई तालिकाओं के आधार पर विभिन्न प्रकार के जोड़ होते हैं और जिस तरह के जुड़ने वाले तालिकाओं की हम इच्छा करते हैं। एक जुड़ाव दो तालिकाओं से डेटा को जोड़ता है। विदेशी कुंजी का पीछा करने के अलावा, तालिकाओं में शामिल होने के चार अन्य तरीके हैं -

  • सरल सम्मिलित हों
  • असोफ जुड़ते हैं
  • बाँया जोड़
  • संघ शामिल हों

यहां, इस अध्याय में, हम इनमें से प्रत्येक जोड़ पर विस्तार से चर्चा करेंगे।

सरल सम्मिलित हों

सरल जुड़ाव सबसे बुनियादी प्रकार का जुड़ाव है, जो अल्पविराम के साथ किया जाता है ','। इस स्थिति में, दो तालिकाओं होना चाहिएtype conformant, अर्थात्, दोनों तालिकाओं में समान क्रम में समान संख्या में स्तंभ हैं, और समान कुंजी है।

table1,:table2 / table1 is assigned the value of table2

हम बग़ल में जुड़ने के लिए समान लंबाई वाली तालिकाओं के लिए अल्पविराम से जुड़ने का उपयोग कर सकते हैं। तालिकाओं में से एक को यहां रखा जा सकता है,

Table1, `Table2

असोफ जॉइन (अंज)

यह सबसे शक्तिशाली जुड़ाव है जिसका उपयोग एक तालिका में किसी क्षेत्र का मान दूसरी तालिका में समय के लिए किया जाता है। आम तौर पर इसका इस्तेमाल प्रचलित बोली प्राप्त करने और प्रत्येक व्यापार के समय पूछने के लिए किया जाता है।

सामान्य प्रारूप

aj[joinColumns;tbl1;tbl2]

उदाहरण के लिए,

aj[`sym`time;trade;quote]

उदाहरण

q)tab1:([]a:(1 2 3 4);b:(2 3 4 5);d:(6 7 8 9))

q)tab2:([]a:(2 3 4);b:(3 4 5); c:( 4 5 6))

q)show aj[`a`b;tab1;tab2]

 a  b  d  c
-------------
 1  2  6
 2  3  7  4
 3  4  8  5
 4  5  9  6

लेफ्ट जॉइन (lj)

यह aj का एक विशेष मामला है जहां दूसरा तर्क एक की-टेबल है और पहले तर्क में सही तर्क की कुंजी के कॉलम हैं।

सामान्य प्रारूप

table1 lj Keyed-table

उदाहरण

q)/Left join- syntax table1 lj table2 or lj[table1;table2]

q)tab1:([]a:(1 2 3 4);b:(2 3 4 5);d:(6 7 8 9))

q)tab2:([a:(2 3 4);b:(3 4 5)]; c:( 4 5 6))

q)show lj[tab1;tab2]

 a  b  d  c
-------------
 1  2  6
 2  3  7  4
 3  4  8  5
 4  5  9  6

संघ में शामिल हों (uj)

यह अलग-अलग स्कीमाओं के साथ दो तालिकाओं का एक संघ बनाने की अनुमति देता है। यह मूल रूप से सरल जुड़ाव () के लिए एक विस्तार है

q)tab1:([]a:(1 2 3 4);b:(2 3 4 5);d:(6 7 8 9))

q)tab2:([]a:(2 3 4);b:(3 4 5); c:( 4 5 6))

q)show uj[tab1;tab2]

 a  b  d  c
------------
 1  2  6
 2  3  7
 3  4  8
 4  5  9
 2  3     4
 3  4     5
 4  5     6

यदि आप keyed टेबल पर uj का उपयोग कर रहे हैं, तो प्राथमिक कुंजियों से मेल खाना चाहिए।