0

このリクエストを何時間も修正しようとしましたが、うまくいきませんでした。

SELECT ((
    SELECT DISTINCT *
    FROM (
        SELECT REPLACE(source_name, "+", "") AS name
        FROM events
        WHERE source_name!=""
        UNION
        SELECT REPLACE(target_name, "+", "") AS name
        FROM events
        WHERE target_name!=""
    )
) AS player_name,
(
    SELECT COUNT(*)
    FROM events
    WHERE source_name=player_name AND event_name="beforePlayerBan"
) as nbr_bans,
(
    SELECT COUNT(*)
    FROM events
    WHERE source_name=player_name AND event_name="beforePlayerKick"
) as nbr_kicks,
(
    SELECT COUNT(*)
    FROM events
    WHERE
        (source_name=player_name OR target_name=player_name)
        AND event_name="afterBattleStarted"
) as nbr_battles,
(
    SELECT COUNT(*)
    FROM events
    WHERE source_name=player_name AND result=0
) as nbr_wins,
(
    SELECT COUNT(*)
    FROM events
    WHERE target_name=player_name AND result=0
) as nbr_defeats,
(
    SELECT COUNT(*)
    FROM events
    WHERE (source_name=player_name OR target_name=player_name) AND result=1
) as nbr_ties,
(
    SELECT COUNT(*)
    FROM events
    WHERE (source_name=player_name OR target_name=player_name) AND result=2
) as nbr_forfeits

エラーは SQLSTATE[42000]: Syntax error or access violation: 1248 です。すべてのテーブルに独自のエイリアスを指定したため、すべての派生テーブルには独自のエイリアスが必要です

4

1 に答える 1

1

最初のサブクエリにエイリアスがないようです:

SELECT ((
       SELECT DISTINCT *
       FROM (
              SELECT REPLACE(source_name, "+", "") AS name
              FROM events
              WHERE source_name!=""
              UNION
              SELECT REPLACE(target_name, "+", "") AS name
              FROM events
              WHERE target_name!=""
    )  myMissingAlias -- alias needed here
) AS player_name, 

さらに、完全なクエリを投稿していない限り、最終的なクエリが欠落している可能性があると思います)

于 2012-09-26T21:01:09.707 に答える