2015-10-26 3 views
1

Мой запрос выглядит какавтообъединение на присоединяемой таблицы

Select m.cw_sport_match_id as MatchId, 
     m.season_id as SeasonId, 
     s.title as SeasonName, 
     c.title as ContestName 
from dbo.cw_sport_match m 
inner join dbo.cw_sport_season s 
    ON m.season_id = s.cw_sport_season_id 
inner join dbo.cw_sport_contest c 
    ON m.contest_id = c.cw_sport_contest_id 
Where s.date_start <= GETDATE() AND s.date_end >= GETDATE() 
order by s.date_start 

Нет, мне нужно имя родителя sport_contest (если есть один, он может быть пустым). Таким образом, в основном я соединяюсь, но нет в той же таблице, что и запрос. Все примеры, которые я нахожу, делают самосоединение, не выполняются на другой таблице. Может ли любой sql pro помочь мне? Итак, как я могу присоединиться к самому cw_sport_season с помощью season_parent_id и получить его название?

+0

Почему вы называете это самостоятельным присоединением, если вы не присоединяетесь к тому же самому столу? Не могли бы вы пояснить. – dan08

+1

'self join не на другой таблице'? Если они находятся на другом столе, то это не самосоединение, а просто соединение. –

+0

okey Мне очень жаль, я думал, что я присоединяюсь, если я снова присоединяюсь к ссылке на ту же таблицу. в этом случае я не присоединяюсь к себе, просто хочу присоединиться к ссылке на объединенной таблице к самой объединенной таблице ... ^^ – LaurinSt

ответ

2

Если я правильно понимаю ваш вопрос, вы должны указать outer join таблицу cw_sport_season, используя поле season_parent_id. Возможно, что-то в этих строках:

Select m.cw_sport_match_id as MatchId, 
     m.season_id as SeasonId, 
     s.title as SeasonName, 
     parent.title as ParentSeasonName, 
     c.title as ContestName 
from dbo.cw_sport_match m 
inner join dbo.cw_sport_season s 
    ON m.season_id = s.cw_sport_season_id 
inner join dbo.cw_sport_contest c 
    ON m.contest_id = c.cw_sport_contest_id 
left join dbo.cw_sport_season parent 
    ON s.season_parent_id = parent.cw_sport_season_id 
Where s.date_start <= GETDATE() AND s.date_end >= GETDATE() 
order by s.date_start 
+0

работает как шарм, спасибо! – LaurinSt

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