2016-04-30 5 views
-3

Ich habe zwei Tabellen:Unite zweispaltige Tabellen zusammen innerhalb SELECT

Erste Tabelle:

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

Zweite Tabelle:

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

Ich möchte diese beiden vereinen Tabellen zusammen in eine, die wie folgt aussehen würde:

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

... etc - (Id kann mehr als einmal erscheinen)

+0

verwenden Sie 'MySQL' oder' SQL Server'? Bitte markieren Sie entsprechend – Squirrel

+1

es gibt 2 Zeilen mit 'Team_Code 433' aus der ersten Abfrage, wie entscheiden Sie, welche zu nehmen? – Squirrel

+0

Warum haben Sie '203994834' über' 399064113' für 'Team_Code' gewählt:' 433' –

Antwort

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

Hallo, Danke, aber es schreibt Ungültiger Objektname 'Abfrage1'. und q1 kann nicht gebunden werden. – ALUFTW

+0

behoben. Tippfehler – Squirrel

1

Verwenden CTEs zur besseren Lesbarkeit -

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

Ist das Semikolon korrekt? Und wird 'WITH

+0

Probieren Sie es aus, es funktioniert auch so. – freakyhat