다른 테이블 열 값에 테이블 열 기반을 만들 가능성이 있습니까? 기존 테이블 (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`)
)");
위의 쿼리는 배송 테이블을 성공적으로 생성했지만 필요한 것이 아닙니다. 어떻게 배송비 열에 geozone id의 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
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다