ये तीन सैंपल टेबल हैं

टीम

+-------------+-------------+
| TeamID      | TeamName    |             
+-------------+-------------+
| 11          | AA          | 
+-------------+-------------+
| 12          | BB          | 
+-------------+-------------+
| 13          | CC          |
+-------------+-------------+

मिलान

+-------------+
| MatchID     |        
+-------------+
| 1           |
+-------------+
| 2           | 
+-------------+
| 3           | 
+-------------+

टीममैच

+-------------+-------------+-------------+
| TmID        | Team_ID     |  MatchID    |
+-------------+-------------+-------------+
| 21          | 11          | 1           |
+-------------+-------------+-------------+
| 22          | 11          | 2           |
+-------------+-------------+-------------+
| 23          | 12          | 1           |
+-------------+-------------+-------------+
| 24          | 13          | 2           |
+-------------+-------------+-------------+
| 24          | 11          | 3           |
+-------------+-------------+-------------+

लक्ष्य TeamName को सूचीबद्ध करना है जहां वे एक से अधिक बार मैचों में भाग लेते हैं जैसे नीचे:

+-------------+
| TeamName    |             
+-------------+
| AA          | 
+-------------+

मैंने यही कोशिश की है:

SELECT TeamName 
FROM  Team T, Match M, Teammatch TM
WHERE T.TeamID = TM.TeamID AND
M.MatchID = TM.MatchID
......

लेकिन मैं वास्तव में यह नहीं समझ सकता कि आगे क्या करना है।

मैंने पहले भी SELECT COUNT का उपयोग करके एक समान प्रश्न पूछा है, लेकिन मुझे वास्तव में समझ में नहीं आता कि यहां सबक्वायरी कैसे लिखी जाए।

0
EDDE2 13 सितंबर 2018, 16:33

2 जवाब

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

प्रयत्न

    SELECT TeamName 
    FROM  Team T 
    JOIN  Teammatch TM ON T.TeamID = TM.TeamID
    JOIN  Match M ON M.MatchID = TM.MatchID
    GROUP BY TeamName
    HAVING COUNT(*) > 1

बेशक आप COUNT(*) को COUNT(DISTINCT M.MatchID) या इसी तरह के साथ बदल सकते हैं।

1
Set 13 सितंबर 2018, 17:06

परीक्षण नहीं किया गया है, लेकिन नीचे की तरह एक प्रश्न काम करना चाहिए। टीमआईडी द्वारा समूह प्रति टीम एक पंक्ति प्राप्त करने के लिए, फिर उस टीम के लिए मैचों की संख्या प्राप्त करने के लिए मैच आईडी को गिनती से एकत्रित करें। उस गणना पर HAVING कथन के साथ प्रदर्शित परिणामों को सीमित करें।

SELECT T.TeamName
FROM TeamMatch TM
    JOIN Match M ON M.MatchID = TM.MatchID
    JOIN Team T ON t.TeamID = TM.TeamID
GROUP BY TeamID
HAVING COUNT(MatchID) > 1
0
DavidP 13 सितंबर 2018, 17:07