Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

SUM का उपयोग करके एकाधिक तालिकाओं से डेटा गिनें

tbl_workers में शामिल होने के बजाय आप इसकी अप्रकाशित विविधता में शामिल हो सकते हैं जहां position और position2 एक ही कॉलम में होगा लेकिन अलग-अलग पंक्तियों में।

यहां बताया गया है कि अनपिवोटिंग कैसा दिख सकता है:

SELECT
  w.id,
  w.name,
  CASE x.pos WHEN 1 THEN w.position ELSE w.position2 END AS position,
  w.status
FROM tbl_workers AS w
  CROSS JOIN (SELECT 1 AS pos UNION ALL SELECT 2) AS x

यहां पूरी क्वेरी है, जो मूल रूप से आपकी मूल क्वेरी है, जिसमें उपरोक्त क्वेरी tbl_workers को प्रतिस्थापित करती है तालिका:

SELECT p.id, 
  p.position, 
  SUM(CASE w.Status WHEN 2 THEN 1 ELSE 0 END)  AS booked,
  SUM(CASE w.Status WHEN 3 THEN 1 ELSE 0 END)  AS placed
FROM tbl_positions AS p
  LEFT JOIN (
    SELECT
      w.id,
      w.name,
      CASE x.pos WHEN 1 THEN w.position ELSE w.position2 END AS position,
      w.status
    FROM tbl_workers AS w
      CROSS JOIN (SELECT 1 AS pos UNION ALL SELECT 2) AS x
  ) AS w 
  ON w.position=p.id
GROUP BY p.id, p.position

अपडेट करें

टिप्पणियों में अतिरिक्त अनुरोध के अनुसार यह एक संशोधित स्क्रिप्ट है:

SELECT p.id, 
  p.position, 
  SUM(CASE w.Status WHEN 2 THEN 1 ELSE 0 END)  AS booked,
  SUM(CASE w.Status WHEN 3 THEN 1 ELSE 0 END)  AS placed
FROM tbl_positions AS p
  LEFT JOIN (
    SELECT
      w.id,
      w.name,
      CASE x.pos WHEN 1 THEN w.position ELSE w.position2 END AS position,
      CASE w.status
        WHEN 4 THEN CASE x.pos WHEN 1 THEN 3 ELSE 2 END
        ELSE w.status
      END AS status
    FROM tbl_workers AS w
      CROSS JOIN (SELECT 1 AS pos UNION ALL SELECT 2) AS x
  ) AS w 
  ON w.position=p.id
GROUP BY p.id, p.position

विचार 4 . को प्रतिस्थापित करने का है 3 . के साथ उप-चयन में स्थिति या 2 इस पर निर्भर करते हुए कि क्या हम वर्तमान में position pull खींच रहे हैं या position2 एकीकृत position . के रूप में . बाहरी चयन पहले की तरह ही तर्क का उपयोग करता रहता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एसक्यूएल को बाएं जॉइन पर अधिकतम आईडी फ़ील्ड मिल रहा है

  2. एक ऑनक्लिक जावास्क्रिप्ट फ़ंक्शन के माध्यम से PHP का उपयोग करके एक MySQL डेटाबेस को अपडेट करना

  3. MySQL में प्रतिदिन नए उपयोगकर्ता कैसे प्राप्त करें

  4. विंडोज आईआईएस - पीएचपी पीडीओ मैसकल ड्राइवर नहीं ढूंढ सका

  5. योग के साथ कॉलम में समूह पंक्तियाँ