2011-06-22 79 views
0

我有两个我想合并为一个的查询。将两个查询合并为一个

第一个看起来像这样;

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' 

第二个看起来像这样;

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') 

我怀疑JOIN会成为解决方案的一部分,我只是不知道如何。 任何想法赞赏。

回答

1

你可以,例如,插入你的第二个查询有权选择第一个条款:

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

伟大的想法,谢谢! –

0

您可以使用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

我试过使用UNION,但由于列不匹配,我得到一个错误。 –

+0

嗯,哪些列不匹配? – Griwes