MySQL Query loop HELP without using PHP -
i have following query:
set @year1 = 2011; select b.yearid, sum(b.ab), sum(b.h), sum(b.h)/ sum(b.ab) batting b join pitching p on (p.playerid = b.playerid , b.yearid = p.yearid , b.ab > 0 ) b.yearid = @year1 this works fine retrieve results 1 year. can loop using on mysql allow me execute query , see results each year?
this code not work , produces syntax errors:
set @year1 = 2011; while @year1 <= 2014 set @year1 = @year1 + 1; select b.yearid, sum(b.ab), sum(b.h), sum(b.h)/ sum(b.ab) batting b join pitching p on (p.playerid = b.playerid , b.yearid = p.yearid , b.ab > 0 ) b.yearid = @year1; end while can write query in mysql or must use language such php?
simplest use group by:
select b.yearid, sum(b.ab), sum(b.h), sum(b.h)/ sum(b.ab) batting b join pitching p on (p.playerid = b.playerid , b.yearid = p.yearid , b.ab > 0 ) b.yearid>=2011 , b.yearid<=2014 group b.yearid; this give list @ once.
a loop possible in stored procedure have use while syntax reasons:
create procedure someprocedure(in start_year int, end_year int) begin declare v_year_id int; set v_year_id=start_year; while(v_year_id<end_year) loop select b.yearid, sum(b.ab), sum(b.h), sum(b.h)/ sum(b.ab) batting b join pitching p on (p.playerid = b.playerid , b.yearid = p.yearid , b.ab > 0 ) yearid=v_year_id; group b.yearid; set v_year_id=v_year_id+1; end while; end; the local variable v_year_id eliminated has been added here clarity. if eliminate v_year_id like:
create procedure someprocedure(in start_year int, end_year int) begin while(start_year<end_year) loop select b.yearid, sum(b.ab), sum(b.h), sum(b.h)/ sum(b.ab) batting b join pitching p on (p.playerid = b.playerid , b.yearid = p.yearid , b.ab > 0 ) yearid=start_year; group b.yearid; set start_year=start_year+1; end while; end; calling procedure done with:
call someprocedure(2011,2014);
Comments
Post a Comment