2013-11-17 2 views
0

У меня есть 2 отдельных операторов выбора, которые возвращают аналогичную информациюОбъединение столбцов из отдельных таблиц

SELECT PlayerName, SUM(Field1) + SUM(Field2) AS Power 
FROM (SELECT PlayerName, Field1, Field2 
    FROM Plays INNER JOIN Creep ON Plays.Id = Creep.Id 
    ) tmp 
GROUP BY PlayerName 

Который возвращает

-- PlayerName   |Power  
-- ---------------------------- 
-- Player1   |4   
-- Player2   |5   

У меня есть отдельный вызов

SELECT PlayerName, SUM(Field3) AS Weakness 
FROM (SELECT PlayerName, Field3 
    FROM Plays INNER JOIN WeakCreep ON Plays.Id = WeakCreep.Id 
    ) tmp2 
GROUP BY PlayerName 

который возвращает аналогичный результат

-- PlayerName   |Weakness  
-- ---------------------------- 
-- Player1   |1   
-- Player2   |3 

Я пытаюсь найти способ получения

-- PlayerName   |Power  |Weakness  
-- --------------------------------------- 
-- Player1   |4   |1  
-- Player2   |5   |3 

Такое ощущение, что я перепробовал все изменения РЕГИСТРИРУЙТЕСЬ и UNION, но я не могу найти способ, чтобы произвести объединяющие результаты. Любые предложения о том, как объединить 2 запроса?

+0

Можете ли вы привести пример того, что вы уже пробовали, и поэтому результат был не прав? – Mureinik

+0

У игрока всегда есть записи в CREEP и WEAKCREEP? Если нет, как вы хотите применить соединение? – APC

ответ

0

попробовать этот запрос:

SELECT PlayerName, SUM(Field1) + SUM(Field2) AS Power, SUM(Field3) AS Weakness 
FROM(SELECT t1.PlayerName, t2.Field1, t2.Field2, t3.Field3 
    FROM 
    Plays t1,Creep t2,WeakCreep t3 
    where 
    t1.Id = t2.Id and t1.Id = t3.Id 
    GROUP BY t1.PlayerName, t2.Field1, t2.Field2, t3.Field3) 
    GROUP BY PlayerName; 
0

Попробуйте использовать слева присоединяется

SELECT p.PlayerName, 
    SUM(c.Field1) + SUM(c.Field2) AS Power , 
    SUM(w.Field3) AS Weakness 
FROM Plays p , Creep c , WeakCreep w 
where p.Id = c.Id(+) 
and p.Id = w.Id(+) 
group by p.PlayerName 
Смежные вопросы