2011-03-06 2 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을 처음 사용하는 경우, 그것은 이들과 같은 일부 리소스에 대한 SO 검색 유용 할 수 있습니다 :

SQL Tutorial

SQL Tutorial

+0

죄송는 datasabase (그들은 돈 '링크에 새로운 사용자가 이미지를 게시하게하십시오). 또한 TeamA와 TeamB가 TeamA 경기장에서 뛰고 있다면 teamA는 로컬 – brisonela

+0

입니다. 너무 뻔뻔 스럽지만 문제는 "방문자"와 같습니다. – brisonela

+0

@Brisonela : 무슨 뜻인지 모르겠습니까? –

관련 문제