MySQL Union query duplicate/group by problem -
just learning union queries - timesaver - having trouble grouping.
i have following statement:
(select `shops`.shpuseradded username, count(`shops`.shpid) shpcount, "" prdcount `shops` group shpuseradded asc) union (select `products`.prduseradded username, "" shpcount, count(`products`.prdid) prdcount `products` group prduseradded asc)
but gives me results first query followed results of second query, without combining usernames:
username|mercount|prdcount | 8| jane | 1| derek | 1| james | 22| | | 3 jane | | 4 derek | | 5 james | | 21
i tried (but got #1248 - every derived table must have own alias
):
select username, shpcount, prdcount ((select `shops`.shpuseradded username, count(`shops`.shpid) shpcount, "" prdcount `shops` group shpuseradded asc) union (select `products`.prduseradded username, "" shpcount, count(`products`.prdid) prdcount `products` group prduseradded asc)) group username asc
i can't seem figure out naming derived table(s) without wiping out data either shpcount or prdcount column - suggestions? i'm going feel stupid thereyago!
solved (really time)! :)
select users.username, products.prdcount, shops.shpcount ( ( (select `shops`.shpaddu username `shops` group shpaddu asc) union (select `products`.prdaddu username `products` group prdaddu asc) ) users ) left join (select prdaddu username, count(*) prdcount `products` group prdaddu) products on users.username = products.username left join (select shpaddu username, count(*) shpcount `shops` group shpaddu) shops on users.username = shops.username
not union -- in case it's join on subqueries:
select shpuseradded username, mercount, prdcount (select shpuseradded, count(*) shpcount shops group shpuseradded asc) s join (select prduseradded, count(*) prdcount products group prduseradded asc) p on (shpuseradded = prduseradded);
Comments
Post a Comment