mysql tutorial एक सम्मिलित के बिना कई तालिकाओं से चयन करें?




mysql workbench (5)

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

उदाहरण के लिए मेरे पास दो टेबल हैं, एक वह है जो एक सिस्टम से लेनदेन दिखाता है और दूसरा एक अलग सिस्टम से लेनदेन के साथ। क्या दोनों तालिकाओं से अलग-अलग पंक्तियों के रूप में सभी लेनदेन को हथियाने का एक तरीका है? यदि तालिका 1 में बीस रिकॉर्ड थे और तालिका 2 में तीस रिकॉर्ड हैं, तो मैं चाहता हूं कि वापसी पर 50 पंक्तियां हों।

https://code.i-harness.com


आप इस नोटरी को आज़मा सकते हैं:

SELECT * from table1,table2 

अधिक जटिल एक:

SELECT table1.field1,table1.field2, table2.field3,table2.field8 from table1,table2 where table1.field2 = something and table2.field3 = somethingelse

आप कुछ इस तरह की कोशिश कर सकते हैं:

SELECT f1,f2,f3 FROM table1
UNION
SELECT f1,f2,f3 FROM table2

इस मामले में हम मान रहे हैं कि हमारे पास दो तालिकाएँ हैं: SMPPMsgLog और SMSService सामान्य स्तंभ SMSService साथ:

SELECT sp.SMS,ss.CMD 
FROM vas.SMPPMsgLog AS sp,vas.SMSService AS ss 
WHERE sp.serviceid=5431 
AND ss.ServiceID = 5431 
AND Receiver ="23276769075" 
AND date(TimeStamp) <='2013-08-07' 
AND date(TimeStamp) >='2013-08-06' \G;

यदि आपका प्रश्न यह था - ename, dname FROM emp, dept with joins का उपयोग करके चुनें।

फिर, मैं यह करूँगा ...

SELECT ename, (SELECT dname 
FROM dept
WHERE dept.deptno=emp.deptno)dname
FROM EMP

आउटपुट:

ENAME      DNAME
---------- --------------
SMITH      RESEARCH
ALLEN      SALES
WARD       SALES
JONES      RESEARCH
MARTIN     SALES
BLAKE      SALES
CLARK      ACCOUNTING
SCOTT      RESEARCH
KING       ACCOUNTING
TURNER     SALES
ADAMS      RESEARCH

ENAME      DNAME
---------- --------------
JAMES      SALES
FORD       RESEARCH
MILLER     ACCOUNTING

14 rows selected.

UNION ALL ऑपरेटर वही हो सकता है जो आप ढूंढ रहे हैं।

इस ऑपरेटर के साथ, आप एक साथ कई पंक्तियों को संरक्षित करते हुए एक साथ कई प्रश्नों से परिणाम को समेट सकते हैं। ध्यान दें कि UNION ऑपरेटर ( ALL कीवर्ड के बिना) परिणाम में मौजूद किसी भी "डुप्लिकेट" पंक्तियों को समाप्त कर देगा। UNION ALL ऑपरेटर प्रत्येक क्वेरी से सभी पंक्तियों को सुरक्षित रखता है (और संभवतः बेहतर प्रदर्शन करेगा क्योंकि इसमें डुप्लिकेट चेक और निष्कासन कार्य करने का ओवरहेड नहीं है)।

प्रत्येक कॉलम के कॉलम और डेटा प्रकार की संख्या प्रत्येक क्वेरी में मेल खाना चाहिए। यदि किसी एक प्रश्न में अन्य की तुलना में अधिक कॉलम हैं, तो हम कभी-कभी कॉलम और डेटाटिप्स "मैच" बनाने के लिए अन्य क्वेरी में डमी अभिव्यक्तियों को शामिल करते हैं। प्रायः, प्रत्येक क्वेरी के चयन सूची में एक अभिव्यक्ति (एक अतिरिक्त कॉलम) को शामिल करना मददगार होता है जो शाब्दिक रूप से लौटता है, यह बताने के लिए कि कौन सा प्रश्न पंक्ति का "स्रोत" था।

SELECT 'q1' AS source, a, b, c, d FROM t1 WHERE ...
UNION ALL
SELECT 'q2', t2.fee, t2.fi, t2.fo, 'fum' FROM t2 JOIN t3 ON ...
UNION ALL
SELECT 'q3', '1', '2', buckle, my_shoe FROM t4

आप कोष्ठक के सेट में इस तरह से एक क्वेरी लपेट सकते हैं, और इसे इनलाइन दृश्य (या "व्युत्पन्न तालिका", MySQL लिंगो में) के रूप में उपयोग कर सकते हैं, ताकि आप सभी पंक्तियों पर समग्र संचालन कर सकें।

SELECT t.a
     , SUM(t.b)
     , AVG(t.c)
  FROM (
         SELECT 'q1' AS source, a, b, c, d FROM t1
          UNION ALL
         SELECT 'q2', t2.fee, t2.fi, t2.fo, 'fum' FROM t2
       ) t
 GROUP BY t.a
 ORDER BY t.a






mysql