मेरे पास 2 प्रश्न हैं जो दोनों का उपयोग करते हैं, कई तालिकाओं से विभिन्न स्तंभों का चयन करें जो नीचे दिए गए परिणाम सेट का उत्पादन करते हैं:

companyID   workType    contractnumber  employeenumber  Value2
1           1C          9999999         111111          2547.21
1           1C          9999999         222222          863.67
1           1C          9999999         333333          2962.15
1           1C          9999999         444444          1971.61
1           1C          9999999         555555          152.41
1           1C          9999999         666666          155.90
1           1C          9999999         777777          657.20


companyID   normalWorkType  employeeNumber  value1
1           1C              11111           1016.08
1           1C              22222           3118.05
1           1C              33333           2628.81
1           61              44444           2547.21

मैं नीचे दिए गए परिणाम का उत्पादन करने के लिए इनसे जुड़ना चाहता हूं .. क्या कोई समझा सकता है कि सही वाक्यविन्यास क्या होगा?

companyID   normalWorkType  contractnumber  employeeNumber  value1  Value2
1           1C              9999999         11111           1016.08 2547.21
1           1C              9999999         22222           3118.05 863.67
1           1C              9999999         33333           2628.81 2962.15
1           61              9999999         44444           2547.21 1971.61
1           1C              9999999         55555           0       152.41
1           1C              9999999         66666           0       155.90
1           1C              9999999         77777           0       657.20

ऊपर ग्रुपिंग companyID और EmployeeNumber . पर है

2
Mr.B 10 जुलाई 2018, 12:56
1
क्या आपने कुछ कोशिश की?
 – 
Ajay Gupta
10 जुलाई 2018, 12:58

6 जवाब

सबसे बढ़िया उत्तर

बाएं बाहरी जुड़ने का प्रयास करें:

SELECT t1.companyID,
       t2.normalWorkType,
       t1.contractnumber,
       t1.employeeNumber,
       coalesce(t2.value1,0) as t2.value1,
       t1.value2
FROM DatabaseName.t1 AS t1 LEFT OUTER JOIN
     DatabaseName.t2 AS t2 ON t1.employeenumber = t2.employeenumber  
       AND t1.companyID = t2.companyID
2
Mani Deep 10 जुलाई 2018, 14:13
SELECT
  *
FROM
  (select top 1  VL1,VL2,VL3 from current_voltage AS q1
where deviceimei ='233'
order by devicetimestamp)   AS q1
CROSS JOIN
  (select top 1  OTI,WTI,ATI from overview  AS q2
where deviceimei ='233'
order by devicetimestamp  )   AS q2
0
krishna mohan 4 अप्रैल 2020, 15:26

आप अपने खोज परिणाम को 2 अस्थायी तालिका में रख सकते हैं और फिर इस 2 अस्थायी तालिका में शामिल हो सकते हैं या अपने प्रत्येक चयन के लिए गठबंधन का उपयोग कर सकते हैं और फिर उनसे जुड़ सकते हैं। पसंद :

SELECT 
  *
FROM (
  SELECT 
     companyID
    ,workType
    ,contractnumber
    ,employeenumber
    ,Value2
  FROM table1
  ) t1
INNER JOIN (
  SELECT 
     companyID
    ,normalWorkType
    ,contractnumber
    ,employeeNumber
    ,value1
    ,Value2
  FROM table2
  ) t2 
    ON t1.companyID = t2.companyid

या अपना परिणाम 2 अलग-अलग अस्थायी तालिका में रखें और फिर उनसे जुड़ें

SELECT 
   companyID
  ,workType
  ,contractnumber
  ,employeenumber
  ,Value2
INTO #tt1
FROM table1

SELECT 
   companyID
  ,normalWorkType
  ,contractnumber
  ,employeeNumber
  ,value1
  ,Value2
INTO #tt2
FROM table2

SELECT *
FROM #tt1 t1
INNER JOIN #tt2 t2 ON t1.companyid = t2.companyID
-2
Eric Brandt 10 जुलाई 2018, 15:27

मैं यहां मान रहा हूं कि प्रस्तावित परिणाम सेट में अनुबंध संख्या वास्तव में आपकी पहली क्वेरी से अनुबंध संख्याएं हैं, और यह अंतर सिर्फ एक टाइपो है। अगर यह सच है, तो यह आपको वही मिलेगा जो आप चाहते हैं।

SELECT
  q1.companyID   
  COALESCE(q2.normalWorkType,q1.workType) AS normalWorkType
  q1.contractnumber  
  q1.employeeNumber  
  COALESCE(q2.value1  ,0) as value1
  q1.Value2
FROM
  (
    <Your first query>
  ) as q1
LEFT JOIN
  (
    <Your second query>
  ) as q2
    ON
      q1.companyID = q2.companyID
      AND
      q1.employeeNumber = q2.employeeNumber;
1
Eric Brandt 10 जुलाई 2018, 14:51

क्वेरी के नीचे प्रयास करें

select Table1.companyId,Table2.normalworktype,Table1.contractnumber,
Table1.employeenumber,Table2.value1,Table1.value2 
from Table1 
inner join Table2 on Table1.companyid = Table2.companyid 
      and Table1.employeeNumber=Table2.employeeNumber
0
Mani Deep 10 जुलाई 2018, 13:42

उत्तर देने के लिए सभी का धन्यवाद,

हुसम एबिश के सुझाव को आजमाने के बाद यह वह नहीं था जिसकी मुझे जरूरत थी लेकिन मुझे इस सूत्र पर ले जाएं। (अपना जवाब अप-वोट किया)

दो क्वेरी परिणामों को एक में कैसे संयोजित करें और मेरे पास अलग-अलग कॉलम नाम हैं

मुझे वास्तव में जो उपयोगी लगा, वह थी लिंक किए गए धागे से नीचे दी गई जानकारी। विभिन्न "बाएं" जुड़ने की कोशिश करने के बाद सुझाव दिया गया कि टिप्पणी के हाइलाइट ने मुझे "पूर्ण बाहरी जुड़ने" का प्रयास करने के लिए प्रेरित किया जिसने मुझे सही परिणाम-सेट दिया है।

यदि आपके पास प्रत्येक क्वेरी से केवल एक पंक्ति है, तो यह केवल एक क्रॉस जॉइन है

SELECT
  *
FROM
  (query1)   AS q1
CROSS JOIN
  (query2)   AS q2

यदि आपके पास प्रत्येक क्वेरी से एक से अधिक पंक्तियाँ हैं, तो आपको एक INNER JOIN या शायद एक FULL OUTER JOIN और डेटा के दो सेटों के बीच कुछ संबंध की आवश्यकता है

SELECT
  *
FROM
  (query1)   AS q1
FULL OUTER JOIN
  (query2)   AS q2
      ON  q2.id2 = q1.id1

ध्यान दें:

  • UNION डेटा को लंबवत रूप से जोड़ता है
  • JOIN डेटा को क्षैतिज रूप से जोड़ता है
0
Mr.B 10 जुलाई 2018, 17:25