2016-04-30 2 views
-3

У меня есть две таблицы:объединить две таблицы столбцов вместе в SELECT,

Первая таблица:

Team_Code   ID 
---------------------------------- 
433     203994834 
436     203994834 
436     309228372 
435     309228373 
434     309228374 
433     399064113 

Вторая таблица:

number_of_times  Team_Code 
------------------------------------ 
3      433 
2      434 
1      435 
1      436 

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

number_of_times Team_Code  ID 
--------------------------------------------- 
3     433   203994834 
2     434   309228374 
1     435   309228373 
1     436   203994834 

... и т.д. - (Id может появляться более одного раза)

+0

вы используете '' MySQL' или SQL Server'? Пожалуйста, отметьте соответствующим образом – Squirrel

+1

Есть 2 строки с 'Team_Code 433' из первого запроса, как вы решаете, что взять? – Squirrel

+0

Почему вы выбрали '203994834' над' 399064113' за 'Team_Code':' 433' –

ответ

2
; with 
query1 as 
(
-- Your Query 1 
SELECT * FROM Fireman_Team WHERE Team_Code in (
    SELECT Answer.Team_Code FROM Answer WHERE 
    Answer.Call_Number IN(
    SELECT Call_Number FROM (SELECT * FROM Call WHERE Call.Time_Started 
     BETWEEN ('2016-01-01 00:00:00') AND 
     ('2016-01-31 23:59:59')) AS SSS)) 
), 
query2 as 
(
-- Your Query 2 
SELECT COUNT(Team_Code) as number_of_times, 
Team_Code FROM (SELECT Answer.Team_Code FROM Answer WHERE 
    Answer.Call_Number IN(
    SELECT Call_Number FROM (SELECT * FROM Call WHERE Call.Time_Started 
     BETWEEN ('2016-01-01 00:00:00') AND 
     ('2016-01-31 23:59:59')) AS SSS) 
) AS re GROUP BY Team_Code 
) 
select * 
from query1 q1 inner join query2 q2 on q1.Team_Code = q2.Team_Code 
+0

Привет, спасибо, но он пишет недопустимое имя объекта 'query1'. и q1 не могут быть связаны. – ALUFTW

+0

исправлено. typo error – Squirrel

1

Используйте КТР для удобства чтения -

WITH CTE1 AS 
(
SELECT [Team_Code],[ID] FROM Fireman_Team WHERE Team_Code in (
    SELECT Answer.Team_Code FROM Answer WHERE 
    Answer.Call_Number IN(
    SELECT Call_Number FROM (SELECT * FROM Call WHERE Call.Time_Started 
     BETWEEN ('2016-01-01 00:00:00') AND 
     ('2016-01-31 23:59:59')) AS SSS)) 
) 

;WITH CTE2 AS 
(
SELECT COUNT(Team_Code) as number_of_times, 
Team_Code FROM (SELECT Answer.Team_Code FROM Answer WHERE 
    Answer.Call_Number IN(
    SELECT Call_Number FROM (SELECT * FROM Call WHERE Call.Time_Started 
     BETWEEN ('2016-01-01 00:00:00') AND 
     ('2016-01-31 23:59:59')) AS SSS) 
) AS re GROUP BY Team_Code 
) 

SELECT b.[number_of_times], b.[Team_Code], a.[ID] 
FROM CTE1 a 
INNER JOIN CTE2 b 
ON a.[Team_Code] = b.[Team_Code] 
+1

Правильно ли точка с запятой? И «С» повторяется так? Я бы ожидал '...), CTE2 AS (...' а не '...); С CTE2 AS (... '. –

+0

Попробуйте, он тоже работает. – freakyhat

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