I'm having trouble seeing the issue here. Why doesn't the following code do what you're asking, in a completely idiomatic SQL-y way?

table a : { AId : int }
table aBJoin : { RefA : int, RefB : int }
table b : { BId : int, RefA : int, Quantity: float }
table c : {Token : int, RefB : int, Quantity: float }

val q : sql_query [] [] _ _ =
    (SELECT a.AId, SUM(c.Quantity * b.Quantity)
     FROM c JOIN b ON c.RefB = b.BId
       JOIN aBJoin ON aBJoin.RefB = b.BId
       JOIN a ON a.AId = aBJoin.RefA
     GROUP BY a.AId)

On 05/31/2013 06:39 PM, Daniel Patterson wrote:
I have a table structure like:

A: aId

ABJoin: refA, refB

B: bId, refA, quantity: float

C: token, refB, quantity: float

The goal is, for a given token, to give a list of all the relevant As,
by joining C with B on refB = bId and then joining B and A through the
ABJoin table. I _want_ to see SUM(C.quantity * B.quantity) - ie the
total number of the specific A that is relevant for the referenced
token, but I'm not able to write that product. (I could if I were just
using SQL)

Is there a way to do this? I'd prefer not to bring everything into
code and then re-implement the join and aggregate...

_______________________________________________
Ur mailing list
[email protected]
http://www.impredicative.com/cgi-bin/mailman/listinfo/ur

Reply via email to