2011-03-06 108 views
3

我是StackOverflow的新手,剛接觸SQL Server時,希望您能幫我解決一些麻煩的問題。SQL查詢問題

這是我的數據庫結構(它的一半西班牙語,希望無所謂)

Database

我的問題是,我不知道現在該怎麼做一個查詢,狀態哪支球隊是局部的,這是訪問者(使用表TMatch,知道球場僅屬於一個團隊)

這是據我可以得到

Select P.NroMatch, (select * from fnTeam (P.TeamA)) as TeamA,(select * from fnTeam (P.TeamB)) as TeamB, 
    (select * from fnEstadium (P.CodEstadium)) as Estadium, (cast(P.GolesTeamA as varchar)) + '-' + (cast(P.GolesTeamA as varchar)) as Score, 
    P.Fecha 
from TMatch P 

使用此功能:

If object_id ('fnTeam','fn')is not null 
drop function fnTeam 
go 
create function fnTeam(@CodTeam varchar(5)) 
returns table 

return(Select Name from TTeam where CodTeam = @CodTeam) 
go 

select * from fnTeam ('Eq001') 
go 
----**** 
If object_id ('fnEstadium','fn')is not null 
drop function fnEstadium 
go 
create function fnEstadium(@CodEstadium varchar(5)) 
returns table 

return(Select Name from TEstadium where CodEstadium = @CodEstadium) 
go 

我希望我解釋自己很好,我感謝你提前幫

編輯:

感謝您的幫助,這是我一直尋找

Select P.NroMatch, 
CASE 
    WHEN Ts.CodTeam= Ta.CodTeamTHEN Ta.Name 
    ELSE Tb.Name 
END 
As TeamLocal, 
CASE 
    WHEN Ts.CodTeam<> Ta.CodTeamTHEN Ta.Name 
    ELSE Tb.Name 
END 
As TeamVisitante, 
Ts.Name as Estadium, 
(cast(P.GolesTeamA as varchar)) + '-' + (cast(P.GolesTeamB as varchar)) as Score,  
P.Fecha 
from 
    TMatch P 
    join TTeamTa ON Ta.CodTeam= P.TeamA 
    join TTeamTb ON Tb.CodTeam= P.TeamB 
    join TEstadium Ts ON Ts.CodEstadium = P.CodEstadium 

回答

4

你並不需要使用「查找」功能,這個(也不應該),加入是一個更好的辦法:

Select 
P.NroMatch, 
Ta.Name as TeamA, 
Tb.Name as TeamB,  
Ts.Name as Estadium, 
cast(P.GolesTeamA as varchar)) + '-' + (cast(P.GolesTeamA as varchar) as Score,  
P.Fecha, 
CASE 
    WHEN Ts.CodTeam = Ta.Name THEN Ta.Name 
    ELSE Tb.Name 
END As HomeTeam, 
CASE 
    WHEN Ts.CodTeam <> Ta.Name THEN Ta.Name 
    ELSE Tb.Name 
END As VistorTeam 
from 
    TMatch P 
    join TTeam Ta ON Ta.CodTeam = P.TeamA 
    join TTeam Tb ON Tb.CodTeam = P.TeamB 
    join TEstadium Ts ON Ts.CodEstadium = P.CodEstadium 

如果你是新的SQL,它可能對某些資源,比如這些所謂搜索有用:

SQL Tutorial

SQL Tutorial

+0

對不起,該datasabase是在鏈路(他們不」讓新用戶發佈圖片)。另外,如果TeamA和TeamB在TeamA體育場比賽,teamA是當地的 – brisonela 2011-03-06 23:59:33

+0

抱歉,因爲這麼激烈,但問題在於「訪客」 – brisonela 2011-03-07 00:25:20

+0

@Brisonela:我不知道你的意思? – 2011-03-07 00:27:19