簡體   English   中英

加入表時獲得太多行

[英]Getting too many rows when joining tables

我不明白為什么在執行 select 語句時會得到這么多行。 兩個查詢都應返回 7017 行。

當我執行此語句時,我得到 7017 行:

SELECT playerID, yearid, teamid, B2 * 2 + B3 * 3 + HR * 4 + BB + H AS TotalBasesTouched
FROM BATTING
WHERE teamID IN ('NYA','NYN');

我也應該在這里得到 7017 行,但我得到的是 654,645。 我不確定我在這里做錯了什么。

SELECT distinct batting.playerID, batting.yearid, batting.teamid, 
batting.B2 * 2 + batting.B3 * 3 + batting.HR * 4 + batting.BB + batting.H AS Total_Bases_Touched
,franchID
,Teams.B2 * 2 + Teams.B3 * 3 + teams.HR * 4 + teams.BB + teams.H AS Teams_Bases_Touched
,format((batting.B2 * 2.0 + batting.B3 * 3.0 + batting.HR * 4.0 + batting.BB + batting.H) / 
(teams.B2 * 2.0 + teams.B3 * 3.0 + teams.HR * 4.0 + teams.BB + teams.H),'P') as 'Touched_%'

FROM Batting, Teams
WHERE batting.teamid IN ('NYA', 'NYN') and batting.teamid = teams.teamid;

嘗試這個:

注意: franchid沒有引用表,所以我認為它是 t.franchid。 您的JOIN語句位於WHERE子句中,這會導致問題。

SELECT DISTINCT 
     b.playerID
    ,b.yearid
    ,b.teamid
    ,b.B2 * 2 + b.B3 * 3 + b.HR * 4 + b.BB + b.H AS Total_Bases_Touched
    ,t.franchID
    ,t.B2 * 2 + t.B3 * 3 + t.HR * 4 + t.BB + teams.H AS Teams_Bases_Touched
    ,FORMAT((b.B2 * 2.0 + b.B3 * 3.0 + b.HR * 4.0 + b.BB + b.H) 
      / 
      (t.B2 * 2.0 + t.B3 * 3.0 + t.HR * 4.0 + t.BB + t.H),'P') AS 'Touched_%'

FROM Batting AS b
JOIN Teams AS t
ON b.teamid = t.teamid

WHERE b.teamid IN ('NYA', 'NYN');

弄清楚了。 我需要加入 teamID和 yearID上的表

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM