Hallo,

leider habe ich ein Problem mit ActiveRecord.
Hier ein kurzes Beispiel:

competitors (id, name,score)
has_won_against(id, competitor1,competitor2,price)

Nun möchte ich gerne, die alle Wettbewerber Selektieren, die 
- Die mind 2x angetreten sind
- Niemals verloren haben
- und in ihrer Karriere schon mehr als 1000 verdient haben.

Ein SQL-Query dazu würde etwa so aussehen:
SELECT DISTINCT c.id,c.name,c.score FROM (
        SELECT id,name,score,sum(h.price),count(h.id) 
        FROM (has_won_against as h) JOIN (competitors as c) on c.id = 
h.competitor1
        WHERE c.id not IN (SELECT competitors2 FROM competitors as c1)
        GROUP_BY h.competitor1
        HAVING sum(h.price) > 1000 AND cound(h.id) > 1
)

Diese Abfrage möchte ich nun gerne mit ActiveRecord umsetzen. Mein Problem ist, 
dass ich nicht weiß, wie ich den inneren Query umsehen soll.
Da ein competitor an vielen hbtm-Beziehungen hängt, wird das SELECT und der 
JOIN-Teil von ActiveRecord gebaut und die Beziehungen werden über :include 
geladen.
Irgendwie müsste ich aber den alias-Namen des ersten competitors kennen, um den 
2. Select in den where-Teil bauen zu können.
Am liebsten wäre es mir jedoch, wenn ich mir über das konkrete SQL keine 
Gedanken machen muss, da der ganze Query über Formularparameter gebaut wird.
Gehe ich dann sehr frei mit SQL um, laufe ich u.U. in Escape-Orgien und halte 
Resultate, die der OR-Mapper ggf. gar nicht mehr in Objekte packen kann.

Wie setze ich das am besten mit ActiveRecord um?

Danke,
Keep smiling
yanosz
_______________________________________________
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/listinfo/rubyonrails-ug

Antwort per Email an