Joe Montana vs. Houston Oilers

Compare players and teams or see head to head results between teams, players, or player vs. team. Data Coverage
THIS QUESTION WAS ANSWERED USING
Stathead Football Logo POWERED BY Pro Football Reference Logo
Your All Access Pass to the Pro Football Database Go beyond the basics. Become a Stathead
Start Your FREE Trial
Display Query »
--------------------------------------

header_pvt_summary

WITH
  rspvt AS (
SELECT person_id, COUNT(*) as games, SUM(win=1) as wins, SUM(loss=1) as losses, SUM(tie=1) as ties, SUM(pass_cmp) AS pass_cmp, SUM(pass_att) AS pass_att, SUM(pass_yds) AS pass_yds, SUM(pass_td) AS pass_td, SUM(pass_int) AS pass_int
FROM sup_player_games as st
  JOIN (SELECT win, loss, tie, game_id, year_id, comp_id, phase_id, team_id, opp_team_id FROM sup_team_games) as tg USING (game_id, team_id)
  JOIN sup_games USING (game_id)
  JOIN sup_phase_seasons USING (comp_id, phase_id, year_id)
WHERE ((person_id=?))
  AND opp_team_id=?
  AND type="reg"  
  ),
  popvt AS (
SELECT person_id, COUNT(*) as games, SUM(win=1) as wins, SUM(loss=1) as losses, SUM(pass_cmp) AS pass_cmp, SUM(pass_att) AS pass_att, SUM(pass_yds) AS pass_yds, SUM(pass_td) AS pass_td, SUM(pass_int) AS pass_int
FROM sup_player_games as st
  JOIN (SELECT win, loss, tie, game_id, year_id, comp_id, phase_id, team_id, opp_team_id FROM sup_team_games) as tg USING (game_id, team_id)
  JOIN sup_games USING (game_id)
  JOIN sup_phase_seasons USING (comp_id, phase_id, year_id)
WHERE ((person_id=?))
  AND opp_team_id=?
  AND type="post"  
  )
SELECT rspvt.person_id, rspvt.games as rspvt_games, rspvt.wins as rspvt_wins, rspvt.losses as rspvt_losses, rspvt.ties as rspvt_ties, popvt.games as popvt_games, popvt.wins as popvt_wins, popvt.losses as popvt_losses, rspvt.pass_cmp AS rspvt_pass_cmp, popvt.pass_cmp AS popvt_pass_cmp, rspvt.pass_att AS rspvt_pass_att, popvt.pass_att AS popvt_pass_att, rspvt.pass_yds AS rspvt_pass_yds, popvt.pass_yds AS popvt_pass_yds, rspvt.pass_td AS rspvt_pass_td, popvt.pass_td AS popvt_pass_td, rspvt.pass_int AS rspvt_pass_int, popvt.pass_int AS popvt_pass_int
FROM rspvt
  JOIN popvt
WHERE 1  LIMIT 0, 200

SQL PARAMS -- $VAR1 = [
          'MontJo01',
          'oti',
          'MontJo01',
          'oti'
        ];

--------------------------------------

pvt_pass

Page Setup Time: 0.00303 seconds

SELECT year_id as year_id_csk, year_id as year_id, GROUP_CONCAT(DISTINCT CONCAT('<a href="', 'DOMAIN', ts.link, '" target="_blank">', ts.name_abbr, '</a>')) as teams_played_for, COUNT(*) AS games, SUM(pass_cmp) AS pass_cmp, SUM(pass_att) AS pass_att, (SUM(pass_att)-SUM(pass_cmp)) AS pass_inc, IF(SUM(pass_att), SUM(pass_cmp)/SUM(pass_att), NULL) as pass_cmp_pct_csk, ROUND(100 * (IF(SUM(pass_att), SUM(pass_cmp)/SUM(pass_att), NULL)),1) AS pass_cmp_pct, SUM(pass_yds) AS pass_yds, SUM(pass_td) AS pass_td, SUM(pass_int) AS pass_int, SUM(pass_int_td) AS pass_int_td, IF(SUM(pass_att), SUM(pass_td)/SUM(pass_att), NULL) as pass_td_pct_csk, ROUND(100 * (IF(SUM(pass_att), SUM(pass_td)/SUM(pass_att), NULL)),1) AS pass_td_pct, IF(SUM(pass_att), SUM(pass_int)/SUM(pass_att), NULL) as pass_int_pct_csk, ROUND(100 * (IF(SUM(pass_att), SUM(pass_int)/SUM(pass_att), NULL)),1) AS pass_int_pct, IF(SUM(pass_att), 
  ROUND(100 *
  (1.0 / 6.0) *
  (LEAST(GREATEST(((SUM(pass_cmp) / SUM(pass_att)) - 0.3) / 0.2, 0), 2.375)
  + LEAST(GREATEST(((SUM(pass_yds) / SUM(pass_att)) - 3.0) / 4.0, 0.0), 2.375)
  + LEAST(GREATEST( (SUM(pass_td)  / SUM(pass_att)) / 0.05, 0.0), 2.375)
  + LEAST(GREATEST((0.095 - (SUM(pass_int) / SUM(pass_att))) / 0.04, 0.0), 2.375)
  ),
   1), NULL
  )
  as pass_rating_csk, ROUND(IF(SUM(pass_att), 
  ROUND(100 *
  (1.0 / 6.0) *
  (LEAST(GREATEST(((SUM(pass_cmp) / SUM(pass_att)) - 0.3) / 0.2, 0), 2.375)
  + LEAST(GREATEST(((SUM(pass_yds) / SUM(pass_att)) - 3.0) / 4.0, 0.0), 2.375)
  + LEAST(GREATEST( (SUM(pass_td)  / SUM(pass_att)) / 0.05, 0.0), 2.375)
  + LEAST(GREATEST((0.095 - (SUM(pass_int) / SUM(pass_att))) / 0.04, 0.0), 2.375)
  ),
   1), NULL
  ),
  1) AS pass_rating, SUM(pass_sacked) AS pass_sacked, SUM(pass_sacked_yds) AS pass_sacked_yds, IF(SUM(pass_sacked IS NOT NULL)>0,SUM(IF(pass_sacked IS NULL,0,pass_sacked))/SUM(IF(pass_sacked IS NULL,0,pass_att+pass_sacked)) , NULL) as pass_sacked_pct_csk, ROUND(100 * (IF(SUM(pass_sacked IS NOT NULL)>0,SUM(IF(pass_sacked IS NULL,0,pass_sacked))/SUM(IF(pass_sacked IS NULL,0,pass_att+pass_sacked)) , NULL)),2) AS pass_sacked_pct, IF(SUM(pass_att), (SUM(pass_yds)/SUM(pass_att)), NULL) as pass_yds_per_att_csk, ROUND(IF(SUM(pass_att), (SUM(pass_yds)/SUM(pass_att)), NULL),1) AS pass_yds_per_att, IF(SUM(pass_att),(SUM(pass_yds) + 20.0 * SUM(pass_td) - 45.0 * SUM(pass_int))/SUM(pass_att),NULL) as pass_adj_yds_per_att_csk, ROUND(IF(SUM(pass_att),(SUM(pass_yds) + 20.0 * SUM(pass_td) - 45.0 * SUM(pass_int))/SUM(pass_att),NULL),2) AS pass_adj_yds_per_att, IF(SUM(pass_sacked IS NOT NULL)>0,SUM(IF(pass_sacked IS NULL,0,pass_yds-pass_sacked_yds + (20.0 * pass_td) - (45.0 * pass_int)))/SUM(IF(pass_sacked IS NULL,0,pass_sacked+pass_att)) ,NULL) as pass_adj_net_yds_per_att_csk, ROUND(IF(SUM(pass_sacked IS NOT NULL)>0,SUM(IF(pass_sacked IS NULL,0,pass_yds-pass_sacked_yds + (20.0 * pass_td) - (45.0 * pass_int)))/SUM(IF(pass_sacked IS NULL,0,pass_sacked+pass_att)) ,NULL),2) AS pass_adj_net_yds_per_att, IF(SUM(pass_cmp), SUM(pass_yds)/SUM(pass_cmp), NULL) as pass_yds_per_cmp_csk, ROUND(IF(SUM(pass_cmp), SUM(pass_yds)/SUM(pass_cmp), NULL),1) AS pass_yds_per_cmp
FROM sup_player_games as st
  JOIN (SELECT game_id, year_id, comp_id, phase_id, team_id, opp_team_id, opp_comp_id, opp_phase_id, team_game_num_season, home_away_neutral FROM sup_team_games) as tg USING (game_id, team_id)
  JOIN sup_phase_seasons USING (comp_id, phase_id, year_id)
  JOIN (SELECT team_id, year_id, name_abbr, name, link, phase_id FROM sup_team_seasons) as ts USING (team_id, year_id, phase_id)
WHERE ((person_id=?))
  AND opp_team_id=?
  AND type="reg" 
GROUP BY year_id
ORDER BY year_id LIMIT 0, 200

SQL PARAMS -- $VAR1 = [
          'MontJo01',
          'oti'
        ];

Query Time: 0.01 seconds
SELECT year_id as year_id_csk, year_id as year_id, GROUP_CONCAT(DISTINCT CONCAT('<a href="', 'DOMAIN', ts.link, '" target="_blank">', ts.name_abbr, '</a>')) as teams_played_for, COUNT(*) AS games, SUM(pass_cmp) AS pass_cmp, SUM(pass_att) AS pass_att, (SUM(pass_att)-SUM(pass_cmp)) AS pass_inc, IF(SUM(pass_att), SUM(pass_cmp)/SUM(pass_att), NULL) as pass_cmp_pct_csk, ROUND(100 * (IF(SUM(pass_att), SUM(pass_cmp)/SUM(pass_att), NULL)),1) AS pass_cmp_pct, SUM(pass_yds) AS pass_yds, SUM(pass_td) AS pass_td, SUM(pass_int) AS pass_int, SUM(pass_int_td) AS pass_int_td, IF(SUM(pass_att), SUM(pass_td)/SUM(pass_att), NULL) as pass_td_pct_csk, ROUND(100 * (IF(SUM(pass_att), SUM(pass_td)/SUM(pass_att), NULL)),1) AS pass_td_pct, IF(SUM(pass_att), SUM(pass_int)/SUM(pass_att), NULL) as pass_int_pct_csk, ROUND(100 * (IF(SUM(pass_att), SUM(pass_int)/SUM(pass_att), NULL)),1) AS pass_int_pct, IF(SUM(pass_att), 
  ROUND(100 *
  (1.0 / 6.0) *
  (LEAST(GREATEST(((SUM(pass_cmp) / SUM(pass_att)) - 0.3) / 0.2, 0), 2.375)
  + LEAST(GREATEST(((SUM(pass_yds) / SUM(pass_att)) - 3.0) / 4.0, 0.0), 2.375)
  + LEAST(GREATEST( (SUM(pass_td)  / SUM(pass_att)) / 0.05, 0.0), 2.375)
  + LEAST(GREATEST((0.095 - (SUM(pass_int) / SUM(pass_att))) / 0.04, 0.0), 2.375)
  ),
   1), NULL
  )
  as pass_rating_csk, ROUND(IF(SUM(pass_att), 
  ROUND(100 *
  (1.0 / 6.0) *
  (LEAST(GREATEST(((SUM(pass_cmp) / SUM(pass_att)) - 0.3) / 0.2, 0), 2.375)
  + LEAST(GREATEST(((SUM(pass_yds) / SUM(pass_att)) - 3.0) / 4.0, 0.0), 2.375)
  + LEAST(GREATEST( (SUM(pass_td)  / SUM(pass_att)) / 0.05, 0.0), 2.375)
  + LEAST(GREATEST((0.095 - (SUM(pass_int) / SUM(pass_att))) / 0.04, 0.0), 2.375)
  ),
   1), NULL
  ),
  1) AS pass_rating, SUM(pass_sacked) AS pass_sacked, SUM(pass_sacked_yds) AS pass_sacked_yds, IF(SUM(pass_sacked IS NOT NULL)>0,SUM(IF(pass_sacked IS NULL,0,pass_sacked))/SUM(IF(pass_sacked IS NULL,0,pass_att+pass_sacked)) , NULL) as pass_sacked_pct_csk, ROUND(100 * (IF(SUM(pass_sacked IS NOT NULL)>0,SUM(IF(pass_sacked IS NULL,0,pass_sacked))/SUM(IF(pass_sacked IS NULL,0,pass_att+pass_sacked)) , NULL)),2) AS pass_sacked_pct, IF(SUM(pass_att), (SUM(pass_yds)/SUM(pass_att)), NULL) as pass_yds_per_att_csk, ROUND(IF(SUM(pass_att), (SUM(pass_yds)/SUM(pass_att)), NULL),1) AS pass_yds_per_att, IF(SUM(pass_att),(SUM(pass_yds) + 20.0 * SUM(pass_td) - 45.0 * SUM(pass_int))/SUM(pass_att),NULL) as pass_adj_yds_per_att_csk, ROUND(IF(SUM(pass_att),(SUM(pass_yds) + 20.0 * SUM(pass_td) - 45.0 * SUM(pass_int))/SUM(pass_att),NULL),2) AS pass_adj_yds_per_att, IF(SUM(pass_sacked IS NOT NULL)>0,SUM(IF(pass_sacked IS NULL,0,pass_yds-pass_sacked_yds + (20.0 * pass_td) - (45.0 * pass_int)))/SUM(IF(pass_sacked IS NULL,0,pass_sacked+pass_att)) ,NULL) as pass_adj_net_yds_per_att_csk, ROUND(IF(SUM(pass_sacked IS NOT NULL)>0,SUM(IF(pass_sacked IS NULL,0,pass_yds-pass_sacked_yds + (20.0 * pass_td) - (45.0 * pass_int)))/SUM(IF(pass_sacked IS NULL,0,pass_sacked+pass_att)) ,NULL),2) AS pass_adj_net_yds_per_att, IF(SUM(pass_cmp), SUM(pass_yds)/SUM(pass_cmp), NULL) as pass_yds_per_cmp_csk, ROUND(IF(SUM(pass_cmp), SUM(pass_yds)/SUM(pass_cmp), NULL),1) AS pass_yds_per_cmp
FROM sup_player_games as st
  JOIN (SELECT game_id, year_id, comp_id, phase_id, team_id, opp_team_id, opp_comp_id, opp_phase_id, team_game_num_season, home_away_neutral FROM sup_team_games) as tg USING (game_id, team_id)
  JOIN sup_phase_seasons USING (comp_id, phase_id, year_id)
  JOIN (SELECT team_id, year_id, name_abbr, name, link, phase_id FROM sup_team_seasons) as ts USING (team_id, year_id, phase_id)
WHERE ((person_id=?))
  AND opp_team_id=?
  AND type="post" 
GROUP BY year_id
ORDER BY year_id LIMIT 0, 200

SQL PARAMS -- $VAR1 = [
          'MontJo01',
          'oti'
        ];

Query Time: 0.01 seconds
Table Build Time: 0.05 seconds

Table Build Time: 0.04 seconds


--------------------------------------

pvt_rec

Page Setup Time: 0.00155 seconds

SELECT year_id as year_id_csk, year_id as year_id, GROUP_CONCAT(DISTINCT CONCAT('<a href="', 'DOMAIN', ts.link, '" target="_blank">', ts.name_abbr, '</a>')) as teams_played_for, COUNT(*) AS games, SUM(rush_att) AS rush_att, SUM(rush_yds) AS rush_yds, IF(SUM(rush_att), SUM(rush_yds)/SUM(rush_att), NULL) as rush_yds_per_att_csk, ROUND(IF(SUM(rush_att), SUM(rush_yds)/SUM(rush_att), NULL),1) AS rush_yds_per_att, SUM(rush_td) AS rush_td, SUM(rush_first_down) AS rush_first_down, SUM(targets) AS targets, SUM(rec) AS rec, SUM(rec_yds) AS rec_yds, IF(SUM(rec), SUM(rec_yds)/SUM(rec), NULL) as rec_yds_per_rec_csk, ROUND(IF(SUM(rec), SUM(rec_yds)/SUM(rec), NULL),1) AS rec_yds_per_rec, SUM(rec_td) AS rec_td, IF(SUM(IF(targets IS NOT NULL, targets,0)) = 0, NULL, SUM(IF(targets IS NOT NULL,rec,0))/SUM(IF(targets IS NOT NULL, targets,0))) as catch_pct_csk, ROUND(100 * (IF(SUM(IF(targets IS NOT NULL, targets,0)) = 0, NULL, SUM(IF(targets IS NOT NULL,rec,0))/SUM(IF(targets IS NOT NULL, targets,0)))),1) AS catch_pct, IF(SUM(IF(targets IS NOT NULL, targets,0)) = 0, NULL, SUM(IF(targets IS NOT NULL,rec_yds,0))/SUM(IF(targets IS NOT NULL, targets,0))) as rec_yds_per_tgt_csk, ROUND(IF(SUM(IF(targets IS NOT NULL, targets,0)) = 0, NULL, SUM(IF(targets IS NOT NULL,rec_yds,0))/SUM(IF(targets IS NOT NULL, targets,0))),1) AS rec_yds_per_tgt, SUM(rec_first_down) AS rec_first_down
FROM sup_player_games as st
  JOIN (SELECT game_id, year_id, comp_id, phase_id, team_id, opp_team_id, opp_comp_id, opp_phase_id, team_game_num_season, home_away_neutral FROM sup_team_games) as tg USING (game_id, team_id)
  JOIN sup_phase_seasons USING (comp_id, phase_id, year_id)
  JOIN (SELECT team_id, year_id, name_abbr, name, link, phase_id FROM sup_team_seasons) as ts USING (team_id, year_id, phase_id)
WHERE ((person_id=?))
  AND opp_team_id=?
  AND type="reg" 
GROUP BY year_id
ORDER BY year_id LIMIT 0, 200

SQL PARAMS -- $VAR1 = [
          'MontJo01',
          'oti'
        ];

Query Time: 0.02 seconds
SELECT year_id as year_id_csk, year_id as year_id, GROUP_CONCAT(DISTINCT CONCAT('<a href="', 'DOMAIN', ts.link, '" target="_blank">', ts.name_abbr, '</a>')) as teams_played_for, COUNT(*) AS games, SUM(rush_att) AS rush_att, SUM(rush_yds) AS rush_yds, IF(SUM(rush_att), SUM(rush_yds)/SUM(rush_att), NULL) as rush_yds_per_att_csk, ROUND(IF(SUM(rush_att), SUM(rush_yds)/SUM(rush_att), NULL),1) AS rush_yds_per_att, SUM(rush_td) AS rush_td, SUM(rush_first_down) AS rush_first_down, SUM(targets) AS targets, SUM(rec) AS rec, SUM(rec_yds) AS rec_yds, IF(SUM(rec), SUM(rec_yds)/SUM(rec), NULL) as rec_yds_per_rec_csk, ROUND(IF(SUM(rec), SUM(rec_yds)/SUM(rec), NULL),1) AS rec_yds_per_rec, SUM(rec_td) AS rec_td, IF(SUM(IF(targets IS NOT NULL, targets,0)) = 0, NULL, SUM(IF(targets IS NOT NULL,rec,0))/SUM(IF(targets IS NOT NULL, targets,0))) as catch_pct_csk, ROUND(100 * (IF(SUM(IF(targets IS NOT NULL, targets,0)) = 0, NULL, SUM(IF(targets IS NOT NULL,rec,0))/SUM(IF(targets IS NOT NULL, targets,0)))),1) AS catch_pct, IF(SUM(IF(targets IS NOT NULL, targets,0)) = 0, NULL, SUM(IF(targets IS NOT NULL,rec_yds,0))/SUM(IF(targets IS NOT NULL, targets,0))) as rec_yds_per_tgt_csk, ROUND(IF(SUM(IF(targets IS NOT NULL, targets,0)) = 0, NULL, SUM(IF(targets IS NOT NULL,rec_yds,0))/SUM(IF(targets IS NOT NULL, targets,0))),1) AS rec_yds_per_tgt, SUM(rec_first_down) AS rec_first_down
FROM sup_player_games as st
  JOIN (SELECT game_id, year_id, comp_id, phase_id, team_id, opp_team_id, opp_comp_id, opp_phase_id, team_game_num_season, home_away_neutral FROM sup_team_games) as tg USING (game_id, team_id)
  JOIN sup_phase_seasons USING (comp_id, phase_id, year_id)
  JOIN (SELECT team_id, year_id, name_abbr, name, link, phase_id FROM sup_team_seasons) as ts USING (team_id, year_id, phase_id)
WHERE ((person_id=?))
  AND opp_team_id=?
  AND type="post" 
GROUP BY year_id
ORDER BY year_id LIMIT 0, 200

SQL PARAMS -- $VAR1 = [
          'MontJo01',
          'oti'
        ];

Query Time: 0.01 seconds
Table Build Time: 0.04 seconds

Table Build Time: 0.04 seconds


--------------------------------------

pvt_gamelogs

Page Setup Time: 0.00342 seconds

SELECT age_on_day, ts.name_abbr as team_name_abbr, ts.link as team_link, opp_team_link, date, game_id, sup_games.link as game_link, year_id as year_id_csk, year_id as year_id, IF(home_away_neutral="H","",IF(home_away_neutral="A","@","N")) as game_location, (SELECT points-points_opp+ifnull(points,0)/100 FROM sup_team_games tg2 WHERE tg2.game_id=st.game_id AND tg2.team_id=st.team_id) as game_result_csk, CONCAT((SELECT CONCAT(IF(win=1,'W',IF(loss=1,'L','T')),', ',points,'-',points_opp) FROM sup_team_games tg2 WHERE tg2.game_id=st.game_id AND tg2.team_id=st.team_id),IF(overtimes>0,IF(overtimes>1,CONCAT(' (',overtimes,'OT)'),' (OT)'),'')) as game_result, os.name_abbr as opp_name_abbr, pass_cmp, pass_att, (pass_att-pass_cmp) AS pass_inc, IF(pass_att, pass_cmp/pass_att, NULL) as pass_cmp_pct_csk, ROUND(100 * (IF(pass_att, pass_cmp/pass_att, NULL)),1) AS pass_cmp_pct, pass_yds, pass_td, pass_int, pass_int_td, IF(pass_att, pass_td/pass_att, NULL) as pass_td_pct_csk, ROUND(100 * (IF(pass_att, pass_td/pass_att, NULL)),1) AS pass_td_pct, IF(pass_att, pass_int/pass_att, NULL) as pass_int_pct_csk, ROUND(100 * (IF(pass_att, pass_int/pass_att, NULL)),1) AS pass_int_pct, IF(pass_att, 
  ROUND(100 *
  (1.0 / 6.0) *
  (LEAST(GREATEST(((pass_cmp / pass_att) - 0.3) / 0.2, 0), 2.375)
  + LEAST(GREATEST(((pass_yds  / pass_att) - 3.0) / 4.0, 0.0), 2.375)
  + LEAST(GREATEST( (pass_td  / pass_att) / 0.05, 0.0), 2.375)
  + LEAST(GREATEST((0.095 - (pass_int / pass_att)) / 0.04, 0.0), 2.375)
  ),
   1), NULL
  ) 
  as pass_rating_csk, ROUND(IF(pass_att, 
  ROUND(100 *
  (1.0 / 6.0) *
  (LEAST(GREATEST(((pass_cmp / pass_att) - 0.3) / 0.2, 0), 2.375)
  + LEAST(GREATEST(((pass_yds  / pass_att) - 3.0) / 4.0, 0.0), 2.375)
  + LEAST(GREATEST( (pass_td  / pass_att) / 0.05, 0.0), 2.375)
  + LEAST(GREATEST((0.095 - (pass_int / pass_att)) / 0.04, 0.0), 2.375)
  ),
   1), NULL
  ) ,
  1) AS pass_rating, pass_sacked, pass_sacked_yds, IF(pass_sacked IS NULL, NULL, pass_sacked/(pass_sacked+pass_att) ) as pass_sacked_pct_csk, ROUND(100 * (IF(pass_sacked IS NULL, NULL, pass_sacked/(pass_sacked+pass_att) )),2) AS pass_sacked_pct, IF(pass_att, ((pass_yds)/(pass_att)), NULL) as pass_yds_per_att_csk, ROUND(IF(pass_att, ((pass_yds)/(pass_att)), NULL),1) AS pass_yds_per_att, IF(pass_att,((pass_yds + (20.0 * pass_td) - (45.0 * pass_int))/(pass_att)),NULL) as pass_adj_yds_per_att_csk, ROUND(IF(pass_att,((pass_yds + (20.0 * pass_td) - (45.0 * pass_int))/(pass_att)),NULL),2) AS pass_adj_yds_per_att, IF(pass_sacked IS NULL,NULL,((pass_yds-pass_sacked_yds + (20.0 * pass_td) - (45.0 * pass_int))/(pass_sacked+pass_att))) as pass_adj_net_yds_per_att_csk, ROUND(IF(pass_sacked IS NULL,NULL,((pass_yds-pass_sacked_yds + (20.0 * pass_td) - (45.0 * pass_int))/(pass_sacked+pass_att))),2) AS pass_adj_net_yds_per_att, IF(pass_cmp, pass_yds/pass_cmp, NULL) as pass_yds_per_cmp_csk, ROUND(IF(pass_cmp, pass_yds/pass_cmp, NULL),1) AS pass_yds_per_cmp, rush_att, rush_yds, IF(rush_att, rush_yds/rush_att, NULL) as rush_yds_per_att_csk, ROUND(IF(rush_att, rush_yds/rush_att, NULL),1) AS rush_yds_per_att, rush_td, rush_first_down
FROM sup_player_games as st
  JOIN sup_games USING (game_id)
  JOIN sup_people USING (person_id)
  JOIN sup_players USING (person_id)
  JOIN (SELECT game_id, year_id, comp_id, phase_id, part_id, team_id, opp_team_id, opp_comp_id, opp_phase_id, team_game_num_season, home_away_neutral, win, loss, tie FROM sup_team_games) as tg USING (game_id, team_id)
  JOIN sup_phase_seasons USING (comp_id, phase_id, year_id)
  JOIN sup_comp_seasons USING (comp_id, year_id)
  JOIN (SELECT team_id, year_id, name_abbr, name, link FROM sup_team_seasons GROUP BY team_id, year_id ) as ts USING (team_id, year_id)
  JOIN (SELECT team_id as opp_team_id, year_id, name_abbr, link as opp_team_link FROM sup_team_seasons GROUP BY team_id, year_id ) as os USING (opp_team_id, year_id)
WHERE ((person_id=?))
  AND opp_team_id=?
  AND type="reg" 
ORDER BY date DESC LIMIT 0, 20

SQL PARAMS -- $VAR1 = [
          'MontJo01',
          'oti'
        ];

Query Time: 0.06 seconds
SELECT age_on_day, ts.name_abbr as team_name_abbr, ts.link as team_link, opp_team_link, date, game_id, sup_games.link as game_link, year_id as year_id_csk, year_id as year_id, IF(home_away_neutral="H","",IF(home_away_neutral="A","@","N")) as game_location, (SELECT points-points_opp+ifnull(points,0)/100 FROM sup_team_games tg2 WHERE tg2.game_id=st.game_id AND tg2.team_id=st.team_id) as game_result_csk, CONCAT((SELECT CONCAT(IF(win=1,'W',IF(loss=1,'L','T')),', ',points,'-',points_opp) FROM sup_team_games tg2 WHERE tg2.game_id=st.game_id AND tg2.team_id=st.team_id),IF(overtimes>0,IF(overtimes>1,CONCAT(' (',overtimes,'OT)'),' (OT)'),'')) as game_result, os.name_abbr as opp_name_abbr, pass_cmp, pass_att, (pass_att-pass_cmp) AS pass_inc, IF(pass_att, pass_cmp/pass_att, NULL) as pass_cmp_pct_csk, ROUND(100 * (IF(pass_att, pass_cmp/pass_att, NULL)),1) AS pass_cmp_pct, pass_yds, pass_td, pass_int, pass_int_td, IF(pass_att, pass_td/pass_att, NULL) as pass_td_pct_csk, ROUND(100 * (IF(pass_att, pass_td/pass_att, NULL)),1) AS pass_td_pct, IF(pass_att, pass_int/pass_att, NULL) as pass_int_pct_csk, ROUND(100 * (IF(pass_att, pass_int/pass_att, NULL)),1) AS pass_int_pct, IF(pass_att, 
  ROUND(100 *
  (1.0 / 6.0) *
  (LEAST(GREATEST(((pass_cmp / pass_att) - 0.3) / 0.2, 0), 2.375)
  + LEAST(GREATEST(((pass_yds  / pass_att) - 3.0) / 4.0, 0.0), 2.375)
  + LEAST(GREATEST( (pass_td  / pass_att) / 0.05, 0.0), 2.375)
  + LEAST(GREATEST((0.095 - (pass_int / pass_att)) / 0.04, 0.0), 2.375)
  ),
   1), NULL
  ) 
  as pass_rating_csk, ROUND(IF(pass_att, 
  ROUND(100 *
  (1.0 / 6.0) *
  (LEAST(GREATEST(((pass_cmp / pass_att) - 0.3) / 0.2, 0), 2.375)
  + LEAST(GREATEST(((pass_yds  / pass_att) - 3.0) / 4.0, 0.0), 2.375)
  + LEAST(GREATEST( (pass_td  / pass_att) / 0.05, 0.0), 2.375)
  + LEAST(GREATEST((0.095 - (pass_int / pass_att)) / 0.04, 0.0), 2.375)
  ),
   1), NULL
  ) ,
  1) AS pass_rating, pass_sacked, pass_sacked_yds, IF(pass_sacked IS NULL, NULL, pass_sacked/(pass_sacked+pass_att) ) as pass_sacked_pct_csk, ROUND(100 * (IF(pass_sacked IS NULL, NULL, pass_sacked/(pass_sacked+pass_att) )),2) AS pass_sacked_pct, IF(pass_att, ((pass_yds)/(pass_att)), NULL) as pass_yds_per_att_csk, ROUND(IF(pass_att, ((pass_yds)/(pass_att)), NULL),1) AS pass_yds_per_att, IF(pass_att,((pass_yds + (20.0 * pass_td) - (45.0 * pass_int))/(pass_att)),NULL) as pass_adj_yds_per_att_csk, ROUND(IF(pass_att,((pass_yds + (20.0 * pass_td) - (45.0 * pass_int))/(pass_att)),NULL),2) AS pass_adj_yds_per_att, IF(pass_sacked IS NULL,NULL,((pass_yds-pass_sacked_yds + (20.0 * pass_td) - (45.0 * pass_int))/(pass_sacked+pass_att))) as pass_adj_net_yds_per_att_csk, ROUND(IF(pass_sacked IS NULL,NULL,((pass_yds-pass_sacked_yds + (20.0 * pass_td) - (45.0 * pass_int))/(pass_sacked+pass_att))),2) AS pass_adj_net_yds_per_att, IF(pass_cmp, pass_yds/pass_cmp, NULL) as pass_yds_per_cmp_csk, ROUND(IF(pass_cmp, pass_yds/pass_cmp, NULL),1) AS pass_yds_per_cmp, rush_att, rush_yds, IF(rush_att, rush_yds/rush_att, NULL) as rush_yds_per_att_csk, ROUND(IF(rush_att, rush_yds/rush_att, NULL),1) AS rush_yds_per_att, rush_td, rush_first_down
FROM sup_player_games as st
  JOIN sup_games USING (game_id)
  JOIN sup_people USING (person_id)
  JOIN sup_players USING (person_id)
  JOIN (SELECT game_id, year_id, comp_id, phase_id, part_id, team_id, opp_team_id, opp_comp_id, opp_phase_id, team_game_num_season, home_away_neutral, win, loss, tie FROM sup_team_games) as tg USING (game_id, team_id)
  JOIN sup_phase_seasons USING (comp_id, phase_id, year_id)
  JOIN sup_comp_seasons USING (comp_id, year_id)
  JOIN (SELECT team_id, year_id, name_abbr, name, link FROM sup_team_seasons GROUP BY team_id, year_id ) as ts USING (team_id, year_id)
  JOIN (SELECT team_id as opp_team_id, year_id, name_abbr, link as opp_team_link FROM sup_team_seasons GROUP BY team_id, year_id ) as os USING (opp_team_id, year_id)
WHERE ((person_id=?))
  AND opp_team_id=?
  AND type="post" 
ORDER BY date DESC LIMIT 0, 20

SQL PARAMS -- $VAR1 = [
          'MontJo01',
          'oti'
        ];

Query Time: 0.06 seconds
Table Build Time: 0.05 seconds

Table Build Time: 0.04 seconds


--------------------------------------
SH->PARAM -- $VAR1 = {
          'match' => 'versus_playervteam',
          't1yrto' => 2025,
          'player_id1' => 'MontJo01',
          'team_id1' => 'oti'
        };
SH->PARAM_NO_DEFAULT -- $VAR1 = {
          'player_id1' => 'MontJo01',
          'team_id1' => 'oti',
          'match' => 'versus_playervteam'
        };
Show Criteria
Share Results

Search Criteria

Seasons
Player 1
Javascript is required for the selection of a player.
Choice is: Joe Montana 
Team 1
Team 2

You have edited your search criteria

or keep editing your search

clear changes

Fetching Results

Stathead spinner

Joe Montana vs. Houston Oilers

Regular Season: 5 GP (5-0), 111 Cmp, 162 Att, 1399 Yds, 12 TD, 4 Int

Playoffs: 1 GP (1-0), 22 Cmp, 38 Att, 299 Yds, 3 TD, 2 Int

Joe Montana vs. Houston Oilers: Passing Totals

Joe Montana vs. Houston Oilers: Rushing & Receiving Totals

Joe Montana vs. Houston Oilers: Game Logs

Subscribe to Stathead Pro Football for full results.

Go inside the Pro Football database and access the sports search engine that was made for fans like you. Subscriptions start at just $9/month. Learn More.

Get your first month FREE

Already a paid subscriber? Log in for full results.

Data coverage:

Player game data: since 1933. Scoring statistics (TD, XP, FG) are complete. Yardage and attempts statistics are nearly complete. Game participation data since 1970.

Player season data: all-time (since 1920). Scoring statistics (TD, XP, FG) are complete all-time. Yardage and attempts statistics were not recorded until 1932. Advanced stats since 2018.

Team Game data: since 1920. Before 1940, only wins, losses, points for, and points allowed are available. Scoring statistics (TD, XP, FG) are complete since 1920. Yardage and attempts statistics are nearly complete since 1933.

Team Season data: since 1940. Scoring statistics (TD, XP, FG) are complete all-time.

Please see our data coverage page for details.

If you utilize material unique to a Sports Reference site for a tweet, an article, or for research for a broadcast or podcast, please strongly consider citing this site as the source for the material. It would be greatly appreciated and would help us continue to produce this material.