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

एकाधिक तालिकाओं और संबंधों के साथ जटिल SQL क्वेरी

मुझे विश्वास है कि यह प्रश्न वही करेगा जो आप चाहते हैं:

SELECT array_agg(players), player_teams
FROM (
  SELECT DISTINCT t1.t1player AS players, t1.player_teams
  FROM (
    SELECT
      p.playerid AS t1id,
      concat(p.playerid,':', p.playername, ' ') AS t1player,
      array_agg(pl.teamid ORDER BY pl.teamid) AS player_teams
    FROM player p
    LEFT JOIN plays pl ON p.playerid = pl.playerid
    GROUP BY p.playerid, p.playername
  ) t1
INNER JOIN (
  SELECT
    p.playerid AS t2id,
    array_agg(pl.teamid ORDER BY pl.teamid) AS player_teams
  FROM player p
  LEFT JOIN plays pl ON p.playerid = pl.playerid
  GROUP BY p.playerid, p.playername
) t2 ON t1.player_teams=t2.player_teams AND t1.t1id <> t2.t2id
) innerQuery
GROUP BY player_teams


Result:
PLAYERS               PLAYER_TEAMS
2:Allen,3:Pierce      1,3
4:Garnett,5:Perkins

यह plays . में प्रत्येक खिलाड़ी के लिए टीमिड पर array_agg का उपयोग करता है ठीक उसी टीम कॉन्फ़िगरेशन वाले खिलाड़ियों का मिलान करने के लिए। मैंने उदाहरण के लिए टीमों के साथ एक कॉलम शामिल किया है, लेकिन इसे तब तक परिणामों को प्रभावित किए बिना हटाया जा सकता है जब तक कि इसे समूह से खंड द्वारा नहीं हटाया जाता है।

SQL Fiddle उदाहरण। Postgesql 9.2.4 के साथ परीक्षण किया गया

संपादित करें:पंक्तियों की नकल करने वाली त्रुटि को ठीक किया गया।



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

  2. django में postgresql db में एक नया आइटम सहेजते समय IntegrityError?

  3. $mysqli->insert_id . के बराबर postgresql

  4. Postgresql में कॉलम प्रकार के आकार की गणना करना

  5. PostgreSQL डेटाबेस संरचना को कैसे डंप करें (प्रत्येक ऑब्जेक्ट को अलग फ़ाइल में)