2011-06-22 7 views
0

J'ai deux requêtes que j'aimerais fusionner en une seule.Fusionner deux requêtes en une seule

Le premier ressemble à ceci;

SELECT t.name, 
     t.score, 
     COUNT(m.user_id) AS memberCount 
     FROM team AS t, team_member AS m 
     WHERE t.team_id = '$id' AND m.team_id = '$id' 

la seconde ressemble à ceci; Je suspecte un JOIN de faire partie de la solution ici, je ne sais pas comment faire. Toutes les idées ont été appréciées.

Répondre

1

vous pouvez, par exemple, insérez la deuxième à droite de requête clause SELECT de première:

SELECT 
    t.name, 
    t.score, 
    (SELECT 
    COUNT(t.team_id) AS rank 
    FROM 
    team AS t 
    WHERE 
    t.score > (SELECT t.score FROM team AS t WHERE t.team_id = '$id') 
) as rank, 
    COUNT(m.user_id) AS memberCount 
FROM 
    team AS t, team_member AS m 
WHERE 
    t.team_id = '$id' AND m.team_id = '$id' 
+0

grande idée, je vous remercie! –

0

Vous pouvez utiliser UNION:

SELECT t.name, 
    t.score, 
    COUNT(m.user_id) AS memberCount 
    FROM team AS t, team_member AS m 
    WHERE t.team_id = '$id' AND m.team_id = '$id' 
UNION 
SELECT COUNT(t.team_id) AS rank 
    FROM team AS t 
    WHERE t.score > (SELECT t.score 
          FROM team AS t 
          WHERE t.team_id = '$id') 
+0

J'ai essayé d'utiliser UNION, mais comme les colonnes ne correspondent pas, j'obtiens une erreur. –

+0

Hmm, quelles colonnes ne correspondent pas? – Griwes

Questions connexes