Just some additional info:<br><br>$ erl -version<br>Erlang (SMP,ASYNC_THREADS) (BEAM) emulator version 5.6.5<br>mnesia-4.4.7<br>stdlib-1.15.5<br><br><br><div class="gmail_quote">2009/5/11 Dan Gudmundsson <span dir="ltr"><<a href="mailto:dgud@erix.ericsson.se">dgud@erix.ericsson.se</a>></span><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">That sounds like a bug in mnesia, I will have looka at it.<br>
<br>
/Dan<br>
<br>
Daniel Kwiecinski wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hi,<br>
<br>
   I'm trying to implement kind of SELECT COUNT(<a href="http://B.ID" target="_blank">B.ID</a> <<a href="http://B.ID" target="_blank">http://B.ID</a>>) C, A.* FROM A, B WHERE <a href="http://A.ID" target="_blank">A.ID</a> <<a href="http://A.ID" target="_blank">http://A.ID</a>> = B.F_ID GROUP BY <a href="http://A.ID" target="_blank">A.ID</a> <<a href="http://A.ID" target="_blank">http://A.ID</a>> HAVING C > 0<div class="im">
<br>
<br>
So I need to make join with count on details. The thing is, I want also to involve sorting and limiting with is but it seams qlc cursor don't like my<br>
approach. *as_with_bs() *works fine but* **top_as_with_some_bs(10) *returns*:**<br>
<br>
{aborted,{badarg,[{ets,first,[106291236]},<br>
                  {mnesia_tm,arrange,3},<br>
                  {mnesia_tm,t_commit,1},<br>
                  {mnesia_tm,apply_fun,3},<br>
                  {mnesia_tm,execute_transaction,5},<br>
                  {erl_eval,do_apply,5},<br>
                  {shell,exprs,6},<br>
                  {shell,eval_exprs,6}]}}*<br>
<br>
QLC with nested QLC queries works fine as long not used with cursors.<br>
Could anyone help me with it?<br>
<br>
Here is what I wrote: (<a href="http://gist.github.com/109936" target="_blank">http://gist.github.com/109936</a>)<br>
<br>
*<br>
bs_by_a_id(A_id) -><br>
  find(qlc:q([ B || B=#b{f_id=F_id} <- mnesia:table(b), F_id == A_id])).<br>
<br>
as_with_bs() -><br>
  find(<br></div>
    qlc:q([ {A,bs_by_a_id(A#<a href="http://a.id" target="_blank">a.id</a> <<a href="http://a.id" target="_blank">http://a.id</a>>)} || A <- mnesia:table(a)])<div class="im"><br>
  ).<br>
<br>
top_as_with_some_bs(Limit) -><br>
  top(<br></div>
    qlc:q([ {A,bs_by_a_id(A#<a href="http://a.id" target="_blank">a.id</a> <<a href="http://a.id" target="_blank">http://a.id</a>>)} || A <- mnesia:table(a)]),<div class="im"><br>
    Limit,<br>
    fun(A1,A2) -> A1 < A2  end<br>
  ).<br>
 % --- utils<br>
<br>
find(Q) -><br>
  F = fun() -> qlc:e(Q) end,<br>
  transaction(F).<br>
<br>
% --- it returns top Limit results from query Q ordered by Order sort function<br>
top(Q, Limit, Order) -><br>
  {atomic, Res} = mnesia:transaction(fun() -><br>
    OQ = qlc:sort(Q, [{order,Order}]),<br>
    QC = qlc:cursor(OQ),<br>
    Res = qlc:next_answers(QC, Limit),<br>
    qlc:delete_cursor(QC),<br>
    Res<br>
  end),<br>
  Res.*<br>
<br>
Regards,<br>
Daniel<br>
<br>
<br></div>
------------------------------------------------------------------------<br>
<br>
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org" target="_blank">erlang-questions@erlang.org</a><br>
<a href="http://www.erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://www.erlang.org/mailman/listinfo/erlang-questions</a><br>
</blockquote>
</blockquote></div><br><br clear="all"><br>-- <br>Kind Regards, <br>Daniel Kwiecinski<br><br>m: 07952028105<br>e:  <a href="mailto:daniel.kwiecinski@gmail.com">daniel.kwiecinski@gmail.com</a><br>