我有两张桌子。1.产品 2.组合
产品表有像 (product_id, product_name) 这样的列。
组合表有像这样的列 (combo_id, combo_name, combo_included_products /* combo 可能有来自产品表的 2 个或更多产品 */)
规则:1个Combo可以有多个产品。
Product Table
product_id product_name
1 Pen
2 Pencil
3 Pen Holders
4 Sharpeners
-
Combo Table
combo_id combo_name this_combo_includes_below_products
1 Big_combo (1,2,3,4) => big combo includes all products
2 Small_combo (2,4) => this combo only includes product 2,4
3 test_combo (1,2)
4 Other_combo (1,4)
那么如何在组合表的第三列中插入多个产品 ID?
我正在考虑存储 1,2,3,4 和 2,4 等数据。然后问题将是编写连接查询。IE
select combo.combo_id, combo.combo_name, product.product.id from combo join product ON combo.this_combo_included_products_id = product.product_id <= 因为会有多个产品id,这是不可能的。
我也在考虑制作一个脚本,我将首先按原样获取组合表,然后我将第三个 cloumn 拆分为“,”并将运行迭代(选择 * from combo where product id=this_combo_included_item_id[i]) <=我是不确定这是个好主意,但这可能是一个替代解决方案,之后需要一些编码。(无论如何我都使用 phpmysql 来获取数据 - 所以我可以在获取后处理它。)
$sql = "SELECT * FROM combo";
$result = $conn->query($sql);
while($row = $result->fetch_assoc()) {
// I can run other query here
$child_query = "select combo.combo_id, combo.combo_name, product.product.id from combo join product
ON combo.this_combo_included_products_id = product.product_id";
}
但是,在设计数据库表时我还能做些什么吗?谢谢。
慕盖茨4494581