2015-06-10 2 views
1

Я хотел бы объединить две таблицы и получить общее количество имен по count() и группировать по функциям.SQL-соединения на основе двух таблиц

Таблица_1 показана ниже;

name  branch  sports    player no 
----  -----  ------    -------- 
Mike  120   basketball   15 
David  110   soccer    18 

Таблица_2 показана ниже как;

jersey color  player no  height 
----------  ---------  ------ 
Blue    15    182 
Green    18    174 

Я попытался объединить две таблицы по внутренним соединениям и сосчитать их на основе имени, такого как;

SELECT name, branch, sports, 
FROM TABLE_1 

INNER JOIN TABLE_2 
ON 
TABLE_1.player no = TABLE_2.player no 

COUNT(name) AS TOTAL 
GROUP BY name, branch, sports, jersey color, player no, height 

выход должен быть

name  branch  player no  jersey color  height  
----  ------  -------   --------   ---- 
Mike   120   15    Blue    182 
David  110   18    Green   174 
Mike   120   15    Blue    182 
Mike   120   15    Blue    182 
David  110   18    Green   174 

После подсчета (имя)

name  branch  player no  jersey color  height  Total 
----  ------  -------   --------   ----  ----- 
Mike   120   15    Blue    182   3 
David  110   18    Green   174   2 

Я размышлял, почему я не могу сделать это работает?

+1

На основе данных, которые вы предоставили, что является результатом, что вы ждете? – BICube

+0

результаты должны быть объединены со всеми столбцами на table_1 и table_2 и подсчетом количества имен как общего путем группировки всех столбцов. – Chelsea

+0

. Пожалуйста, добавьте таблицу ожидаемых результатов на ваш вопрос. Пока неясно, что вы просите – BICube

ответ

1

Вы по существу пытаетесь совместить результаты один за другим, а не бок о бок. Это требует union [all], не join:

SELECT name, COUNT(*) 
FROM  (SELECT name FROM table1 
      UNION ALL 
      SELECT name FROM table2) t 
GROUP BY name 
+0

Как я могу объединить остальные столбцы в одну таблицу? – Chelsea

+0

Я не думаю, что им нужно СОЮЗ. Им нужно присоединиться – BICube

Смежные вопросы