2016-04-03 56 views
-5

難的另一個表來解釋我的問題,但我會盡我所能...SQL INNER JOIN - 選擇數據基於價值的另一行

我試圖建立各種表的視圖,但我需要兩個額外的欄目「HomeTeamID」和「AwayTeamID」,即使對於該特定事件的其他市場,也會帶來適當的ID。

我已經附加數據告訴你什麼是我想要實現(電子表格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

覺得我我知道了,但又遇到了另一個問題。如果我不在SELECT區域包含HomeTeamID,則需要23秒。當我包含HomeTeamID時,出現以下錯誤:

'無法爲數據庫'tempdb'中的對象'dbo.SORT臨時運行存儲:140737648001024'分配空間,因爲'PRIMARY'文件組已滿。通過刪除不需要的文件,刪除文件組中的對象,向文件組添加其他文件或爲文件組中的現有文件設置自動增長來創建磁盤空間。 '

由於受到限制,Visual Studio在Parallels中的Windows 8.1內部運行,我只有1GB的備用磁盤空間。該表本身有大約50,000條記錄共(中密度纖維板/ LDF文件僅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

道歉,我錯過了從表中,團隊只是一個兩列表:ID和名稱 –

+0

那麼,你的查詢沒有什麼問題,它需要時間,因爲你正在使用多個連接,它可以得到很慢的速度......這是如何與完全標準化的數據庫...慢讀... – Borna