mysql可选择关系_mysql-选择多对多关系的另一面

背景

产品展示

+----+-----------+

| id | product |

+----+-----------+

| 1 | product_1 |

| 2 | product_2 |

| 3 | product_3 |

+----+-----------+

产品_功能

+------------+------------+

| product_id | feature_id |

+------------+------------+

| 1 | 1 |

| 1 | 2 |

| 1 | 3 |

| 1 | 4 |

| 2 | 1 |

| 2 | 3 |

| 3 | 4 |

+------------+------------+

特征

+----+-----------+

| id | feature |

+----+-----------+

| 1 | feature_1 |

| 2 | feature_2 |

| 3 | feature_3 |

| 4 | feature_4 |

+----+-----------+

然后,我选择像这样:

SELECT products.product,

GROUP_CONCAT(features.feature) AS features

FROM products

LEFT JOIN products_features

ON product_id = products.id

LEFT JOIN features

ON products_features.feature_id = features.id

GROUP BY products.id

得到类似的东西:

+-----------+-----------------------------------------+

| product | features |

+-----------+-----------------------------------------+

| product_1 | feature_1,feature_2,feature_3,feature_4 |

| product_2 | feature_1,feature_3 |

| product_3 | feature_4 |

+-----------+-----------------------------------------+

因此,一切都很棒,但是,我想做的就是只拥有具有feature_1和feature_3的东西,同时仍然获得其他功能.

换句话说,我想编写一个查询来获取我:

+-----------+-----------------------------------------+

| product | features |

+-----------+-----------------------------------------+

| product_1 | feature_1,feature_2,feature_3,feature_4 |

| product_2 | feature_1,feature_3 |

+-----------+-----------------------------------------+

我试过了:

SELECT products.product,

GROUP_CONCAT(features.feature) AS features

FROM products

LEFT JOIN products_features

ON product_id = products.id

RIGHT JOIN features

ON products_features.feature_id = features.id AND features.feature in ('feature_1','feature_3')

GROUP BY products.id

但是我当然知道:

+-----------+---------------------+

| product | features |

+-----------+---------------------+

| (null) | feature_4,feature_2 |

| product_1 | feature_1,feature_3 |

| product_2 | feature_3,feature_1 |

+-----------+---------------------+

因此,尽管我现在知道product_1和product_2是具有这些功能的产品,但是我看不到它们具有的其余功能.

什么查询将允许我指定feature_1和feature_3并得到以下响应?

+-----------+-----------------------------------------+

| product | features |

+-----------+-----------------------------------------+

| product_1 | feature_1,feature_2,feature_3,feature_4 |

| product_2 | feature_1,feature_3 |

+-----------+-----------------------------------------+

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值