编辑:
我发现了问题。 “base3_run_id”列在查询的另一行中被引用,使其不明确。当我说它在工作台上运行良好时,我显然是错的;我认为是这样,但今天它没有用。考虑一下这个问题就解决了,问题出在我自己身上......让我们一起去讨论白痴。
原始问题:
我在Amazon的AWS RDS服务的免费层上运行了一个MySQL实例,使用它来为运行在EC2实例上的网站提供数据。我在添加我需要使用的查询时遇到问题,我无法弄清楚原因。
PHP文件(在相关部分,从我所知道的)看起来像这样:
$i_batting_leaders_sql="select
bat_name as batter,
if(bat_home_id=0,away_team_name,home_team_name) as team,
...
(e.sb+f.sb) as sb,
(e.cs+f.cs) as cs,
...
from papb_pbp a
left join papb_lwts b on ...
left join papb_lwts c on ...
left join (select ...
left join (select year_id, base1_run_id, sum(if(run1_sb_fl='T',1,0)) as sb, sum(if(run1_cs_fl='T',1,0)) as cs from papb_pbp where year_id = 2015 group by base1_run_id) e on a.bat_name = e.base1_run_id
left join (select year_id, base2_run_id, sum(if(run2_sb_fl='T',1,0)) as sb, sum(if(run2_cs_fl='T',1,0)) as cs from papb_pbp where year_id = 2015 group by base2_run_id) f on a.bat_name = f.base2_run_id
where a.year_id = 2015 and b.year_id = 2015 and c.year_id = 2015 and d.year_id = 2015
group by batter";
$result = $conn->query($i_batting_leaders_sql);
if ($result->num_rows > 0) {
echo "<table><tr><th><a href=".$link_base."batter>Batter</a></th><th><a href=".$link_base."team>Team</a></th><th><a href=".$link_base."PA>PA</a></th><th><a href=".$link_base."AB>AB</a></th><th><a href=".$link_base."H>H</a></th><th><a href=".$link_base."1B>1B</a></th><th><a href=".$link_base."2B>2B</a></th><th><a href=".$link_base."3B>3B</a></th><th><a href=".$link_base."HR>HR</a></th><th><a href=".$link_base."K>K</a></th><th><a href=".$link_base."BB>BB</a></th><th><a href=".$link_base."iBB>iBB</a></th><th><a href=".$link_base."HBP>HBP</a></th><th><a href=".$link_base."p_per_pa>Pitch/PA</a></th><th><a href=".$link_base."SB>SB</a></th><th><a href=".$link_base."CS>CS</a></th><th><a href=".$link_base."sac>Sac</a></th><th><a href=".$link_base."DP>DP</a></th><th><a href=".$link_base."runners_per_PA>Runners/PA</a></th><th><a href=".$link_base."run3_score>Run3B-score%</a></th><th><a href=".$link_base."AVG>AVG</a></th><th><a href=".$link_base."OBP>OBP</a></th><th><a href=".$link_base."SLG>SLG</a></th><th><a href=".$link_base."ISO>ISO</a></th><th><a href=".$link_base."BABIP>BABIP</a></th><th><a href=".$link_base."k_pct>K%</a></th><th><a href=".$link_base."bb_pct>BB%</a></th><th><a href=".$link_base."wOBA>wOBA</a></th><th><a href=".$link_base."wRC>wRC</a></th></tr>";
// output data of each row
while($row = $result->fetch_assoc()) {
echo "<tr><td><a href=\"http://****/player.php?name=".$row["batter"]."\">".$row["batter"]."</td><td>".$row["team"]."</td><td>".$row["PA"]."</td><td>".$row["AB"]."</td><td>".$row["H"]."</td><td>".$row["1B"]."</td><td>".$row["2B"]."</td><td>".$row["3B"]."</td><td>".$row["HR"]."</td><td>".$row["K"]."</td><td>".$row["BB"]."</td><td>".$row["iBB"]."</td><td>".$row["HBP"]."</td><td>".$row["p_per_pa"]."</td><td>".$row["SB"]."</td><td>".$row["CS"]."</td><td>".$row["sac"]."</td><td>".$row["DP"]."</td><td>".$row["runners_per_PA"]."</td><td>".$row["run3_score"]."</td><td>".$row["AVG"]."</td><td>".$row["OBP"]."</td><td>".$row["SLG"]."</td><td>".$row["ISO"]."</td><td>".$row["BABIP"]."</td><td>".$row["k_pct"]."</td><td>".$row["bb_pct"]."</td><td>".$row["wOBA"]."</td><td>".$row["wRC"]."</td></tr>";
}
} else {
echo "0 results";
}
这样可以正常工作,并产生正确和预期的结果。但是,当我尝试将其更改为
时(e.sb+f.sb+g.sb) as sb,
(e.cs+f.cs+g.cs) as cs,
并在连接后添加另一个连接到f但在where子句之前:
left join (select year_id,
base3_run_id, sum(if(run3_sb_fl='T',1,0)) as sb,
sum(if(run3_cs_fl='T',1,0)) as cs
from papb_pbp where year_id = 2015
group by base3_run_id) g
on a.bat_name = g.base3_run_id
PHP结果为“0结果”。它在工作台上运行良好,而不是通过PHP。添加联接时会发生此行为,无论我是否从联接表中进行选择。我不能为我的生活弄清楚这里可能出现的问题。有人可以帮忙吗?此外,我很乐意根据需要发布更多信息。
谢谢, 约翰