2017-09-08 16 views
1

私は異なるテーブルから4つ以上のCOUNT(*)クエリを取得しようとしていましたのクエリに。1つのテーブルで複数のCOUNT(*)クエリを取得するにはどうすればよいですか?

これも可能ですか、または4つの異なるクエリを作成する必要がありますか?

これは私のコードです:列の

try (final PreparedStatement sel = conn.prepareStatement("SELECT COUNT(*), SUM(coins) FROM User"); 
      final PreparedStatement sel2 = conn.prepareStatement("SELECT COUNT(*) FROM Friends"); 
      final PreparedStatement sel3 = conn.prepareStatement("SELECT COUNT(*) FROM Clans"); 
      final PreparedStatement sel4 = conn.prepareStatement("SELECT COUNT(*) FROM ClanMembers")) { 
     try (final ResultSet rs = sel.executeQuery(); final ResultSet rs2 = sel2.executeQuery(); final ResultSet rs3 = sel3.executeQuery()) { 
      rs.last(); 
      rs2.last(); 
      rs3.last(); 
      return new Object[] { rs.getInt(1), rs.getInt(2), rs2.getInt(1)/2, rs3.getInt(1) }; 
     } 
} 
+0

UNION ALLを、またはサブクエリを登録しよう。 – jarlh

+0

'UNION ALL'を使うのは私にとっては最も簡単な解決策ですが、2列のクエリが1つしかないので、これはうまくいきません。サブクエリを使用することが1つの解決策です。 FYI:パラメータを渡さないと 'Statement'を使うことができます。 – AxelH

答えて

6
SELECT COUNT(*), SUM(coins) FROM User 
union all 
SELECT COUNT(*), 0 FROM Friends 
union all 
SELECT COUNT(*), 0 FROM Clans 
union all 
SELECT COUNT(*), 0 FROM ClanMembers 
... 

量と種類は、クエリを結合する方法を示すために更新されたすべてのUNION句のクエリ

回答で同じでなければなりません。

+0

最初のクエリを見ます;)COUNTとSUMがあります。だからあなたの声明は実際に彼がこれを使うことができないと伝えています。しかし、それは象徴のタイトルにマッチする...だから私はこれが有効だと思います...私はあなたにそれを与える! – AxelH

+0

@AxelH答えが更新されました – StanislavL

+0

ええ、私はそれについて考えました、シンプルで働きました! – AxelH

4

はちょうど別のオプションのソリューション

StanislavLの答えは、素敵な答えは、あなたがそれを使用することができている

、それが返されます(n)が行

(私はので、私は答えとして記述する必要はまだコメントすることはできません)を得ました

が、念のため、あなただけの1行 あなたはこの

SELECT q1.count1,q1.coins,q2.count2, q3.count3, q4.count4 
from (select (COUNT(*) count1, SUM(coins) coins, 1 id FROM User, 1 var) q1 
inner join (SELECT COUNT(*) count2, 1 id FROM Friends) q2 on q1.id=q2.id 
inner join (SELECT COUNT(*) count3, 1 id FROM Clans) q3 on q1.id=q3.id 
inner join (SELECT COUNT(*) count4, 1 id FROM ClanMembers) q4 on q1.id=q4.id 
+0

ありがとう!また、良い答え – Bob

0

を試すことができますが必要な場合まあ、私が明白な答えを逃しているようです。

これは私の問題解決:

SELECT COUNT(*) FROM User union all SELECT COUNT(*) FROM Friends union all SELECT COUNT(*) FROM Clans union all SELECT COUNT(*) FROM ClanMembers union all SELECT SUM(coins) FROM User ...

関連する問題