<br><br><div class="gmail_quote">On Thu, Aug 4, 2011 at 11:41, Robert Wohlfarth <span dir="ltr"><<a href="mailto:rbwohlfarth@gmail.com">rbwohlfarth@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
I have limited experience using WITH. It was one of those things tucked in the back of my mind as "being useful someday". With that caveat, here's some experimental code (i.e. I haven't actually run it)...
<div><br></div><div>WITH RECURSIVE cat_iwant(category_id, parent_id) AS (</div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px">
<div>SELECT category_id, parent_id </div></blockquote></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px">
<div>FROM tblcategory </div></blockquote></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px">
<div>WHERE category_name = 'category_name'</div></blockquote></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>UNION ALL</div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px">

<blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>SELECT c.category_id, c.parent_id</div></blockquote></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px">
<blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>FROM tblcategory c, cat_iwant cw</div></blockquote></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px">
<blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>WHERE c.category_id = cw.parent_id</div></blockquote></blockquote><div>)</div><div>SELECT </div><blockquote style="margin:0 0 0 40px;border:none;padding:0px">

<div>(</div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px">
<div>SELECT category_id </div><div>FROM cat_iwant </div><div>WHERE parent_id IS NULL</div></blockquote>) AS parent_id,</blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px">
<div>SUM(dtl.amount)</div></blockquote><div>FROM</div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>cat_iwant cw</div><div>INNER JOIN (</div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px">

<blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>SELECT category_id, SUM(amount) AS amount</div></blockquote></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px">
<blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>FROM tbltransdetails</div></blockquote></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px">
<blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div>GROUP BY category_id</div></blockquote>) dtl ON dtl.category_id = cw.category_id</blockquote><div><br></div><div>The WITH statement builds an in-memory table listing all of the categories in a given lineage. The top category has no parent (parent_id IS NULL). The recursive part of the WITH stops because no category_id matches a null parent_id.</div>

<div><br></div><div>The INNER JOIN of the main SELECT grabs all of the details for any category listed in the in-memory table from WITH. In plain English, it adds up all of the detail records for all of the categories in the lineage. </div>

<div><br></div></blockquote><div></div><div></div></div>Thanks Robert, that's much closer.  Now I get an empty result consisting of "parent_id" and "sum".  :-)<br><br>I'll keep tinkering with it, and let you know some of the things I try out.<br>
<br>Blessings,<br>Don<br>-- <br>D.C. Parris, FMP, LEED AP O+M, ESL Certificate<br>Minister, Security/FM Coordinator, Free Software Advocate<div><a href="https://www.xing.com/profile/Don_Parris" target="_blank">https://www.xing.com/profile/Don_Parris</a>  |  <a href="http://www.linkedin.com/in/dcparris" target="_blank">http://www.linkedin.com/in/dcparris</a></div>
<div>GPG Key ID: F5E179BE</div><br>