sql - MYSQL group products by compatibilty -
i have 2 tables, 1 kits can contain various sub-products, , list of sub-products can't added in same kit.
in simplified form:
create table `kits` ( `subprodid` int(11) not null default '0', `kitid` varchar(50) null default null, `kitname` varchar(512) null default null, primary key (`subprodid`) ); create table `subprod_incompatible` ( `incompid` int(11) not null default '0', `subprodid` int(11) null default null, `subprodincompid` int(11) null default null, primary key (`versaincompid`) ) in subprod_incompatible, subprodid , subprodincompid exist subprodids in kits.
right use procedural code outside database produce list of kits contain products not conflict according subprod_incompatible table, i'd in sql if @ possible.
what i'd to
select `kitid`, `kitname`, group_concat(`subprodid`) ("a subquery") q group `groupingcriterion` "a subquery" should return columns of kits, along generated groupingcriterion.
here idea. each kit, list of matches incompatible table each subproduct. then, aggregate kit and incompatible id , see if have 2 products. if so, have incompatible products in kit:
select k.kitid, i.incompid kits k join subprod_incompatible on k.subprodid in (i.subprodid, i.subprodincompid) group k.kitid, i.incompid having count(distinct k.subprodid) = 2;
Comments
Post a Comment