2011-06-22 8 views
0

2つのクエリを1つにマージしたいと思っています。2つのクエリを1つにマージする

最初の例はこのようです。

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' 

2番目はこのように見えます。

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

あなたは、例えば、最初の1の句を選択するために、あなたの2番目のクエリを右に挿入することがあります。

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

関連する問題