gpt4 book ai didi

php - 根据sql中的另一个表列值创建表列

转载 作者:行者123 更新时间:2023-11-29 03:29:22 27 4
gpt4 key购买 nike

是否有可能根据另一个表列值创建表列?现有表(geozone)看起来像这样,它不是固定的(可以包含更多的 id 和名称)

id | name
1 | UK
2 | CANADA
3 | JAPAN

我正在尝试从 php 页面创建一个新页面

mysql_query("CREATE TABLE shipping (
`id` int(11) NOT NULL auto_increment,
`product_id` int(11) NOT NULL,
`shipping_cost` decimal(15,2) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`)
)");

上面的查询成功创建了运费表,但这不是我需要的,我如何创建 shipping_cost 列的 id 为 geozone id?
示例:shipping_cost_1、shipping_cost_2 和 shipping_cost_3

最佳答案

听起来运费取决于产品及其发送到的地理区域,这意味着需要将 geozone_id 列添加到您的 shipping_cost 表中。还要在 (geozone_id,product_id) 上添加一个唯一约束,因为每个唯一对应该只有一个运费。

CREATE TABLE shipping (
`id` int(11) NOT NULL auto_increment,
`geozone_id` int(11) NOT NULL, -- specify which geozone this cost is for
`product_id` int(11) NOT NULL,
`shipping_cost` decimal(15,2) NOT NULL,
PRIMARY KEY (`id`),
-- UNIQUE KEY `id` (`id`), -- Not necessary because Primary keys are already unique
UNIQUE KEY `product_id_geozone_id` (`product_id`,`geozone_id`) -- each product, geozone can only have 1 cost
)

然后您可以通过连接为每个产品/地理区域对选择成本:

select geozone.name, product.name,
shipping.shipping_cost
from products
join shipping on shipping.product_id = product.id
join geozone on shipping.geozone_id = geozone.id

关于php - 根据sql中的另一个表列值创建表列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32424126/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com