Recursive CTE returns less rows when using aggregate subquery
-------------------------------------------------------------

                 Key: CORE-3698
                 URL: http://tracker.firebirdsql.org/browse/CORE-3698
             Project: Firebird Core
          Issue Type: Bug
    Affects Versions: 2.5.0
         Environment: Firebird Server 2.5.0.26074 - Classic - Windows 7 32bit
            Reporter: Israel Lopez






This returns 12 rows

with recursive b (id, src, bomid, stagebomid,nextqty)
as
    (
        select  bomitem.id, 'a' as src, bom.num as bomid,  bomitem.stagebomid, 
0 as nextqty
        from bom
            join bomitem on bom.id = bomitem.bomid
            join part on part.id = bomitem.partid
            JOIN (SELECT part.ID,SUM(COALESCE(tag.qty,0)) as qty FROM PART LEFT 
JOIN TAG ON TAG.PARTID = PART.ID GROUP BY 1) AS QOH ON QOH.ID = PART.ID
        where bom.num = 'H0083'

        union all

        select  bomitem.id, 'b' as src, bom.num as bomid,  bomitem.stagebomid, 
0 as nextqty
        from bom
            join bomitem on bom.id = bomitem.bomid
            join part on part.id = bomitem.partid
            JOIN (SELECT part.ID,SUM(COALESCE(tag.qty,0)) as qty FROM PART LEFT 
JOIN TAG ON TAG.PARTID = PART.ID GROUP BY 1) AS QOH ON QOH.ID = PART.ID

            join b parent on parent.stagebomid = bom.id
    )
select * from b


This also returns only 12 rows


with recursive b (id, src, bomid, stagebomid,nextqty)
as
    (
        select  bomitem.id, 'a' as src, bom.num as bomid,  bomitem.stagebomid, 
0 as nextqty
        from bom
            join bomitem on bom.id = bomitem.bomid
            join part on part.id = bomitem.partid
            JOIN (SELECT part.ID,SUM(0) as qty FROM PART GROUP BY 1) AS QOH ON 
QOH.ID = PART.ID
        where bom.num = 'H0083'

        union all

        select  bomitem.id, 'b' as src, bom.num as bomid,  bomitem.stagebomid, 
0 as nextqty
        from bom
            join bomitem on bom.id = bomitem.bomid
            join part on part.id = bomitem.partid
            JOIN (SELECT part.ID,SUM(0) as qty FROM PART GROUP BY 1) AS QOH ON 
QOH.ID = PART.ID

            join b parent on parent.stagebomid = bom.id
    )
select * from b



This returns the 15 rows I was looking for.


with recursive b (id, src, bomid, stagebomid,nextqty)
as
    (
        select  bomitem.id, 'a' as src, bom.num as bomid,  bomitem.stagebomid, 
0 as nextqty
        from bom
            join bomitem on bom.id = bomitem.bomid
            join part on part.id = bomitem.partid
            JOIN (SELECT part.ID,0 as qty FROM PART) AS QOH ON QOH.ID = PART.ID
        where bom.num = 'H0083'

        union all

        select  bomitem.id, 'b' as src, bom.num as bomid,  bomitem.stagebomid, 
0 as nextqty
        from bom
            join bomitem on bom.id = bomitem.bomid
            join part on part.id = bomitem.partid
            JOIN (SELECT part.ID,0 as qty FROM PART) AS QOH ON QOH.ID = PART.ID

            join b parent on parent.stagebomid = bom.id
    )
select * from b

Maybe it is my misunderstandings of CTEs, but I imagine first query would work.


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://tracker.firebirdsql.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

------------------------------------------------------------------------------
Cloud Computing - Latest Buzzword or a Glimpse of the Future?
This paper surveys cloud computing today: What are the benefits? 
Why are businesses embracing it? What are its payoffs and pitfalls?
http://www.accelacomm.com/jaw/sdnl/114/51425149/
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to