0

単純なデータベース テーブルから名前、# キル、# デスを抽出したいと考えています。

テーブルには

_from(殺人者)、_to(死んだ人)、そしてイベントの盗聴。pvp の場合、その人が死亡したか、キルを達成したかをカウントし、それを合計に追加したいと考えています。

これはクエリで実行できますか、それとも何かスクリプトを作成する必要がありますか? これは@すべて機能しません:

SELECT (select COUNT( _from ) from wiretaps group by _from) as num_kills, 
       (select COUNT( _to ) from wiretaps group by _to) as num_deaths, 
        _from as name
FROM wiretaps
WHERE message LIKE  "%PvP:%"

http://sqlfiddle.com/#!2/1e5d9/1

| _FROM |    _TO | MESSAGE | ID |
---------------------------------
|  naez |  salty |    PvP: |  1 |
|  naez | prince |    PvP: |  2 |
| chuck |   naez |    PvP: |  3 |

期待される出力:

| name |    num_kills | num_deaths |
---------------------------------
|  naez   |  2 |    1 | 
|  prince |  0 |    1 | 
| chuck   |  1 |    0 | 
| salty   |  0 |    1 | 
4

1 に答える 1

2
select name, sum(num_kills) num_kills, sum(num_deaths) num_deaths
from (
    select _from name, count(*) num_kills, 0 num_deaths
    from wiretaps
    where message like '%PvP:%'
    group by _from
    union all
    select _to name, 0 num_kills, count(*) num_deaths
    from wiretaps
    where message like '%PvP:%'
    group by _to) x
group by name

SQLFIDDLE

于 2013-05-23T23:07:59.080 に答える