On Wed, Dec 06, 2006 at 06:58:49AM +0900, Victor Zverok Shepelev wrote:
> Hi all.
> 
> Random idea, just for fun - using "list comprehensions" for SQL queries
> generation.
> 
> employees = Table.new(:id, :name, :sec_name, :salary, :age)
> 
> employees.select{|e| e.name == 'John' && e.salary > 50}.sort_by{|e|
> e.age}[2,10]
> 
> #generates "select * from Employees where name = 'John' and salary > 50
> order by age limit 2,10"
> 
> employees.select{|e| e.salary < 150}.count
> 
> #generates "select count(*) from Employees where salary < 150
> 
> Something like this. (I still don't know, how to limit selected columns in
> obvious way)
> 
> And even more complex:
> 
> employees = Table.new(:id, :name, :sec_name, :salary, :age)
> positions = Table.new(:id, :employee_id, :position_name)
> 
> (employees + positions).select{|e, p| e.id == p.employee_id}
> 
> #generates "select * from Employees, Positions where Employees.id ==
> Positions.employee_id"
> 
> Idea is completely stolen from Phil Wadler's Links[1] language.
> Also MS's LINQ and ruby's Mongoose DB seems to do something like this.
> 
> But the realization of above seems to be interesting task (for RubyQuiz, may
> be?)
> 
The ez_where plugin for rails does this. 
http://brainspl.at/articles/2006/01/30/i-have-been-busy
> Thanks for your patience. And sorry me my English.
> 
> V.
> 
> 1. http://groups.inf.ed.ac.uk/links/
> 2. http://en.wikipedia.org/wiki/Language_Integrated_Query
> 3. http://rubyforge.org/projects/mongoose/
> 
> 
>