1

これらのクエリは個別に機能します。すべての結果を合計するUNIONを作成するにはどうすればよいですか?

SELECT SUM(players) FROM `tournament_players` FROM (
SELECT COUNT(*) as `players` FROM `tournament_players` WHERE `foursome_1_p1_name` IS NOT NULL AND `tournament` BETWEEN 13 AND 17 AND flight = '8 AM'
UNION
SELECT COUNT(*) as `players` FROM `tournament_players` WHERE `foursome_1_p2_name` IS NOT NULL AND `tournament` BETWEEN 13 AND 17 AND flight = '8 AM'
UNION
SELECT COUNT(*) as `players` FROM `tournament_players` WHERE `foursome_1_p3_name` IS NOT NULL AND `tournament` BETWEEN 13 AND 17 AND flight = '8 AM'
UNION
SELECT COUNT(*) as `players` FROM `tournament_players` WHERE `foursome_1_p4_name` IS NOT NULL AND `tournament` BETWEEN 13 AND 17 AND flight = '8 AM'
)
4

2 に答える 2

5

あなたは正しい方向に進んでいますが、追加のFROMキーワードがあります。これを試して:

SELECT SUM(players) FROM (
SELECT COUNT(*) as `players` FROM `tournament_players` WHERE `foursome_1_p1_name` IS NOT NULL AND `tournament` BETWEEN 13 AND 17 AND flight = '8 AM'
UNION
SELECT COUNT(*) as `players` FROM `tournament_players` WHERE `foursome_1_p2_name` IS NOT NULL AND `tournament` BETWEEN 13 AND 17 AND flight = '8 AM'
UNION
SELECT COUNT(*) as `players` FROM `tournament_players` WHERE `foursome_1_p3_name` IS NOT NULL AND `tournament` BETWEEN 13 AND 17 AND flight = '8 AM'
UNION
SELECT COUNT(*) as `players` FROM `tournament_players` WHERE `foursome_1_p4_name` IS NOT NULL AND `tournament` BETWEEN 13 AND 17 AND flight = '8 AM'
) `tournament players`
于 2012-10-10T16:29:20.210 に答える
1

これが必要なようです。個々のクエリをサブクエリ内に配置して、:を取得しますsum()

SELECT SUM(players) 
FROM 
(
    SELECT COUNT(*) as `players` 
    FROM `tournament_players` 
    WHERE `foursome_1_p1_name` IS NOT NULL 
        AND `tournament` BETWEEN 13 AND 17 
        AND flight = '8 AM'
    UNION
    SELECT COUNT(*) as `players` 
    FROM `tournament_players` 
    WHERE `foursome_1_p2_name` IS NOT NULL 
        AND `tournament` BETWEEN 13 AND 17 
        AND flight = '8 AM'
    UNION
    SELECT COUNT(*) as `players` 
    FROM `tournament_players` 
    WHERE `foursome_1_p3_name` IS NOT NULL 
        AND `tournament` BETWEEN 13 AND 17 
        AND flight = '8 AM'
    UNION
    SELECT COUNT(*) as `players` 
    FROM `tournament_players` 
    WHERE `foursome_1_p4_name` IS NOT NULL 
        AND `tournament` BETWEEN 13 AND 17 
        AND flight = '8 AM'
) x -- place your alias here
于 2012-10-10T16:27:41.473 に答える