【发布时间】:2015-06-03 17:09:10
【问题描述】:
我有两张表,一张是可以包含各种子产品的套件,另一张是不能在同一个套件中添加在一起的子产品列表。
简化形式:
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`)
)
在subProd_incompatible、subProdID 和subProdIncompID 中都作为子ProdID 存在于kits。
现在我使用数据库外部的程序代码来生成一个套件列表,这些套件都包含根据subProd_incompatible 表不冲突的产品,但如果可能的话,我想在 SQL 中完成。
我想要的是
SELECT `kitID`, `kitName`, GROUP_CONCAT(`subProdID`)
FROM ("a subquery") AS Q
GROUP BY `GroupingCriterion`
“子查询”应该返回kits 的列,以及生成的GroupingCriterion。
【问题讨论】:
-
你能提供一些示例数据和所需的o/p吗?
-
你的数据结构真的没有意义,除非子产品只能在一个套件中。
-
@GordonLinoff:一个子产品可以包含在多个套件中。此外,我正在使用的真实数据要广泛得多,这只是一个精简的、匿名的版本。另请注意,并非
kita表中的每个子产品都存在不兼容性。
标签: mysql sql group-by group-concat