[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Re: Lisp comprehensions => SQL

Victor 'Zverok' Shepelev

12/6/2006 8:12:00 AM

From: Ken Bloom [mailto:kbloom@gmail.com]
Sent: Wednesday, December 06, 2006 3:35 AM
>On Wed, 06 Dec 2006 06:58:49 +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?)
>>
>> Thanks for your patience. And sorry me my English.
>>
>> V.
>>
>> 1. http://groups.inf.ed.ac...
>> 2. http://en.wikipedia.org/wiki/Language_Integr...
>> 3. http://rubyforge.org/projects...
>
>Have you had a look at my SqlStatement library?
>http://sqlstatement.ruby...
>
>It's not quite like what you're asking, as it prefers to look a little
>bit more like SQL translated into Ruby. It's really designed more for
>programmatic manipulation of SQL statements, and for using Ruby to drive
>processing performed in a SQL database.
>
>You might also want to look at Criteria. http://mephle.org...
>

This approach (somethin-like-SQL inside Ruby) is acceptable. But for me, it
is not seem very natural.

V.