1

私は現在、投票システムのプロジェクトに取り組んでいます。「dbName」という名前のmysqlデータベースとフィールドがあります

`for table "pospresident"
---------------|-------------|---------------- \n
  idCandidate  |  NumOfVote  |  CandidateName  \n
---------------|-------------|---------------- \n
    1          |    20       |      Joe
    2          |    30       |      Carlo
---------------+-------------+----------------

for table "posvpres"

---------------|-------------|----------------
  idCandidate  |  NumOfVote  |  CandidateName 
---------------|-------------|----------------
    1          |    15       |      Anne
    2          |    35       |      Lucas
---------------+-------------+----------------

and so on ...

`

投票数が最も多い候補者の名前をすべて別のテーブルに表示したいだけです。SELECTクエリがどうあるべきかについてのアイデアが必要です。

4

2 に答える 2

0

を使用UNION ALLして2つのテーブルからデータを取得してから、とを使用GROUP BYして、投票権を持つこの候補のみを取得します。このようなもの:SUMHAVINGMAX

SELECT
  idCandidate,
  CandidateName,
  SUM(NumOfVote) Votes
FROM
(
    SELECT * 
    FROM  pospresident p
    UNION ALL
    SELECT * 
    FROM posvpres v 
) AS t
GROUP BY idCandidate, CandidateName
HAVING SUM(NumOfVote) = (SELECT MAX(NumOfVote) 
                         FROM
                         (
                             SELECT  NumOfVote FROM posvpres
                             UNION ALL
                             SELECT  NumOfVote FROM pospresident 
                         ) t);

SQLフィドルデモ

これはあなたに与えるでしょう:

| IDCANDIDATE | CANDIDATENAME | VOTES |
---------------------------------------
|           2 |         Lucas |    35 |
于 2013-02-04T09:38:35.467 に答える
0

私があなたを正しく理解しているなら、あなたは各テーブルから個別に選択したいと思います。次のようなものを試してください。

SELECT idCandidate, 
   CandidateName 
FROM pospresident 
WHERE NumOfVote = (SELECT MAX(NumOfVote) FROM pospresident)

そして、Mahmoudが提供するフィドルを使用します:http ://www.sqlfiddle.com/#!2/b3c82 / 4

幸運を。

于 2013-02-04T09:45:05.677 に答える