2015-03-11 5 views
1

J'ai une base de données MySQL de tous les résultats du tournoi de basket NCAA. Je regarde les "nantis" et "n'ont pas" des cerceaux de collège, et recherchant qui descend dans et hors de la liste de "nantis" en examinant des offres de tournoi de NCAA au fil du temps.Comparer deux requêtes SQL

J'ai une requête qui compte le nombre d'apparitions NCAA par chaque équipe pour deux séries d'années. Je veux comparer les résultats des deux séries - voir qui a abandonné et qui est passé d'une année à l'autre. Par exemple, quelles équipes ont disputé 6 des 10 tournois de la NCAA entre 1985 et 1994, soit 6 entre 1986 et 1995, et quelles sont les différences entre les deux listes? Voici ce que j'ai:

Select t1.Team AS "1994 Teams",t2.Team AS "1995 Teams" 
FROM 
(SELECT Count(DISTINCT TABLE_NAME.`Year`) AS 'Totals', TABLE_NAME.Team, TABLE_NAME.Current_Conference 
FROM TABLE_NAME 
WHERE TABLE_NAME.`Year` BETWEEN 1985 AND 1994 
GROUP BY TABLE_NAME.Team HAVING Totals >= 6 
ORDER BY TABLE_NAME.Team) AS t1, 

(SELECT Count(DISTINCT TABLE_NAME.`Year`) AS 'Totals', TABLE_NAME.Team, TABLE_NAME.Current_Conference 
FROM TABLE_NAME 
WHERE TABLE_NAME.`Year` BETWEEN 1986 AND 1995 
GROUP BY TABLE_NAME.Team HAVING Totals >= 6 
ORDER BY TABLE_NAME.Team) AS t2 
WHERE t1.Team = t2.Team 

Ce retour (dans ce cas) 32 dossiers - toutes les équipes qui étaient dans 6 des 10 tournois de la NCAA dans les deux 1985-1994 et 1986-1995. J'essaie de trouver les équipes qui sont dans un ensemble et pas l'autre.

Répondre

0

Une façon de faire est d'utiliser la sous-requête dans la clause WHERE:

SELECT t1.Team 
    FROM (
      SELECT COUNT(DISTINCT TABLE_NAME.`Year`) AS 'Totals', 
        TABLE_NAME.Team, 
        TABLE_NAME.Current_Conference 
      FROM TABLE_NAME 
      WHERE TABLE_NAME.`Year` BETWEEN 1985 AND 1994 
     GROUP BY TABLE_NAME.Team 
      HAVING Totals >= 6 
     ORDER BY TABLE_NAME.Team 
     ) AS t1 
WHERE t1.team NOT IN (
       SELECT TABLE_NAME.Team 
       FROM TABLE_NAME 
       WHERE TABLE_NAME.`Year` BETWEEN 1986 AND 1995 
      GROUP BY TABLE_NAME.Team 
       HAVING COUNT(DISTINCT TABLE_NAME.`Year`) >= 6) 
+0

Merci - il ne revient pas les bons résultats pour une raison quelconque, cependant. Essayer de passer au crible ce qu'il me donne pour voir ce qui ne va pas. En l'état actuel des choses, il n'y a pas d'enregistrement quand il devrait y avoir trois équipes dans le groupe 1985-1994 qui ne font pas partie du groupe 1986-95 .... – tjb1013

+0

Pour vous aider, j'ai besoin de plus d'informations. Pouvez-vous coller une décharge de votre table? –

+0

Merci ... http://pastebin.com/heeqmgDZ – tjb1013