Проблема SQL-запроса - PullRequest
       2

Проблема SQL-запроса

3 голосов
/ 07 марта 2011

Я новичок в StackOverflow и новичок в SQL Server. Я бы хотел, чтобы вы помогли мне с каким-нибудь хлопотным запросом.

Это моя структура базы данных (она наполовину испанская, надежда не имеет значения)

База данных

Моя проблема в том, что я сейчас не знаю, как сделать запрос, который указывает, какая команда является локальной, а какая посетителем (используя таблицу 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  

1 Ответ

4 голосов
/ 07 марта 2011

Для этого вам не нужно использовать функции поиска (и не следует), лучше использовать объединения:

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

Учебник SQL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...