2013-07-07 25 views
0

我正在使用Retrosheet棒球play-by-play數據庫來幫助我學習SQL(使用mySQL)。它有一張名爲「遊戲」的表格,它提供了關於所有遊戲的一般信息:日期,體育場,球隊,比分等等。它還提供關於球員的信息,例如開始投手,陣容,裁判等。但是,所有人都被標記使用ID。我有一個查找表,匹配所有的名字姓和名。每行有多個ID的SQL查找表

如果我想從匹配特定遊戲的遊戲數據庫中選擇*,但我想從ID表中返回名稱而不是ID,有沒有辦法做到這一點?

更具體地說,我們可以說我想從遊戲中選擇game_ID,home_team_id,away_team_id,home_start_pit_id,away_start_pit_id。我想要的是投手的真實姓名而不是id。

+0

你學過表連接嗎?如果沒有,請閱讀這個主題。聯接是SQL的一個基本方面,並在每個SQL教程中都有介紹。 –

+0

我曾嘗試加入,但不知道如何返回多個名稱,下面的答案是我不知道該怎麼做。 – user2557228

+0

如果您要選擇BaseballGame,StartingPlayerName,Team,Position team ='home',您將獲得9行。這就是SQL的工作原理。通常將多個玩家放在同一行上是表示層的責任。但是在SQL中,它可以完成;要在這樣的查詢中獲得同一行上的多個玩家,您必須使用PIVOT來執行高級SQL。 – Tim

回答

3

假設有一個叫「投手」包含字段ID,名字,姓氏(及其他)

你會做一個簡單的連接表。

select game_id, home_team_id,home_team_id, away_team_id, 
    home_team_pitcher.first_name, home_team_pitcher.last_name, 
    away_team_pitcher.first_name, away_team_pitcher.last_name 
    from games 
    join pitchers as home_team_pitcher on pitchers.id = home_start_pit_id 
    join pitchers as away_team_pitcher on pitcher.id = away_start_pit_id 
+0

工作就像一個魅力!謝謝。 – user2557228