2016-04-03 5 views
-5

трудно объяснить мою проблему, но я буду стараться изо всех сил ...SQL INNER JOIN - Выбрать данные из другой таблицы на основе значения на другой строке

Я пытаюсь построить вид из различных таблиц, но Я хочу два дополнительных столбца «HomeTeamID» и «AwayTeamID», которые содержат соответствующие идентификаторы, даже для других рынков для этого конкретного события.

Я приложил данные, чтобы показать, что я пытаюсь достичь (таблица here)

Image data

+0

ОК, так почему downvotes –

+0

пожалуйста, добавлять таблицы в метод cutAndPastable, определения таблиц и т. д. –

+0

См. изображение выше –

ответ

-1

Вы должны присоединиться 2 раза,

SELECT HomeTeam.ID, AwayTeam.ID from xyz INNER JOIN Team as HomeTeam on Team.ID = HomeTeam.ID INNER JOIN Team as AwayTeam on Team.ID = AwayTeam.ID 
-1

Think I» у меня это получилось, но возникла еще одна проблема. Занимает 23 секунды, если я НЕ включаю HomeTeamID в область SELECT. Когда я ВКЛЮЧАЮТ HomeTeamID, я получаю следующую ошибку:

«Не удалось выделить пространство для объекта« dbo.SORT временное хранилище: 140737648001024 »в базе данных« tempdb », потому что файловая группа« PRIMARY »заполнена. Создайте дисковое пространство, удалив ненужные файлы, отбросьте объекты в файловой группе, добавив дополнительные файлы в файловую группу или установив автозапуск для существующих файлов в файловой группе. '

Visual Studio работает внутри Windows 8.1 в Parallels, из-за ограничений у меня есть только 1 ГБ свободного места на диске. Сами столы имеют около 50 000 записей в общей сложности (в/LDF файлы MDF только 40MB, поэтому я изо всех сил, чтобы увидеть, в чем проблема?/

SELECT DISTINCT 
    BetfairEvents.OpenDate AS EventDateTime, 
    MarketT.Name AS MarketType, HomeContractT.RunnderID AS HomeTeamID, 
    CompetitionsT.Name AS CompetitionName, ContractsT.ID AS ContractID, ContractsT.RunnerID AS SelectionID, 
    ContractsT.LayOdds AS Price, ContractsT.LayAvailable AS Available, 
    RunnerT.Name AS RunnerName 
    FROM BetfairEvents 
    INNER JOIN BetfairMarket MarketT ON MarketT.EventID = BetfairEvents.ID 
    INNER JOIN BetfairCompetitions CompetitionsT ON CompetitionsT.ID = MarketT.CompetitionID 
    INNER JOIN BetfairContract ContractsT ON ContractsT.MarketID = MarketT.ID 
    INNER JOIN BetfairRunner RunnerT ON RunnerT.ID = ContractsT.RunnerID 
    INNER JOIN BetfairMarketType MarketTypeT ON MarketTypeT.Name = MarketT.Name 
    INNER JOIN BetfairMarket HomeMarketT ON MarketT.EventID = BetfairEvents.ID 
    INNER JOIN BetfairContract HomeContractT ON HomeContractT.SelectionID = 1 
+0

Чувство downvotes сегодня, такая позитивность в воздухе ... –

+0

Извинения, я пропустил это из листа, Team - это всего лишь таблица с двумя столбцами: ID и имя –

+0

Ну, в вашем запросе нет ничего плохого, это требует времени, потому что вы используете несколько объединений, которые могут замедлить работу ... вот как это происходит с полностью нормализованными базами данных ... медленное чтение ... – Borna

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