# EC-cube の商品コード一括付与する SQL

EC-cube は、EC サイトを運営するためのオープンソースの e コマースプラットフォームです。EC-cube を使用している場合、商品コードの管理は非常に重要です。商品コードは在庫管理や注文処理などのさまざまな業務に使用されます。しかし、商品が追加されたり更新されたりする際に、商品コードを一括で付与する必要があることがあります。そのために、SQL クエリを使用して商品コードを一括で付与する方法を紹介します。

以下の SQL クエリは、EC-cube の商品コードを一括で付与するためのものです。

UPDATE dtb_product_class as p1
JOIN dtb_product_class as p2 ON p1.product_id = p2.product_id
SET p1.product_code = p2.product_code
WHERE p1.product_code IS NULL AND p2.product_code IS NOT NULL;

この SQL クエリの動作を説明します。

  • UPDATE dtb_product_class as p1 dtb_product_class テーブルを p1 というエイリアスで更新します。
  • JOIN dtb_product_class as p2 ON p1.product_id = p2.product_id 同じ商品に対する情報を p1 と p2 で結合します。
  • SET p1.product_code = p2.product_code p1 の商品コードを p2 の商品コードで更新します。
  • WHERE p1.product_code IS NULL AND p2.product_code IS NOT NULL p1 の商品コードが NULL であり、p2 の商品コードが NULL でない場合に更新します。これにより、既存の商品コードがない商品にのみ新しい商品コードが付与されます。

この SQL クエリを実行することで、商品コードが一括で付与され、EC-cube の商品管理プロセスが効率化されます。商品コードが欠落している商品に対して特に便利です。

EC-cube を使用する際には、商品コードの管理を適切に行うことで、スムーズな EC サイトの運営が可能となります。

# dtb_product_class テーブル

EC-cube の dtb_product_class テーブルは、EC-cube システム内で商品に関する情報を格納するためのデータベーステーブルの 1 つです。このテーブルは、EC-cube の商品管理において非常に重要な役割を果たしており、商品に関するさまざまな情報を保持します。

テーブル構造

CREATE TABLE `dtb_product_class` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `product_id` int(10) unsigned DEFAULT NULL,
  `sale_type_id` smallint(5) unsigned DEFAULT NULL,
  `class_category_id1` int(10) unsigned DEFAULT NULL,
  `class_category_id2` int(10) unsigned DEFAULT NULL,
  `delivery_duration_id` int(10) unsigned DEFAULT NULL,
  `creator_id` int(10) unsigned DEFAULT NULL,
  `product_code` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `stock` decimal(10,0) DEFAULT NULL,
  `stock_unlimited` tinyint(1) NOT NULL DEFAULT 0,
  `sale_limit` decimal(10,0) unsigned DEFAULT NULL,
  `price01` decimal(12,2) DEFAULT NULL,
  `price02` decimal(12,2) NOT NULL,
  `delivery_fee` decimal(12,2) unsigned DEFAULT NULL,
  `visible` tinyint(1) NOT NULL DEFAULT 1,
  `create_date` datetime NOT NULL COMMENT '(DC2Type:datetimetz)',
  `update_date` datetime NOT NULL COMMENT '(DC2Type:datetimetz)',
  `currency_code` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL,
  `point_rate` decimal(10,0) unsigned DEFAULT NULL,
  `discriminator_type` varchar(255) COLLATE utf8mb4_bin NOT NULL,
  `regular_discount_id` int(10) unsigned DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `IDX_1A11D1BA4584665A` (`product_id`),
  KEY `IDX_1A11D1BAB0524E01` (`sale_type_id`),
  KEY `IDX_1A11D1BA248D128` (`class_category_id1`),
  KEY `IDX_1A11D1BA9B418092` (`class_category_id2`),
  KEY `IDX_1A11D1BABA4269E` (`delivery_duration_id`),
  KEY `IDX_1A11D1BA61220EA6` (`creator_id`),
  KEY `dtb_product_class_price02_idx` (`price02`),
  KEY `dtb_product_class_stock_stock_unlimited_idx` (`stock`,`stock_unlimited`),
  KEY `IDX_1A11D1BA86AEDC4C` (`regular_discount_id`),
  CONSTRAINT `FK_1A11D1BA248D128` FOREIGN KEY (`class_category_id1`) REFERENCES `dtb_class_category` (`id`),
  CONSTRAINT `FK_1A11D1BA4584665A` FOREIGN KEY (`product_id`) REFERENCES `dtb_product` (`id`),
  CONSTRAINT `FK_1A11D1BA61220EA6` FOREIGN KEY (`creator_id`) REFERENCES `dtb_member` (`id`),
  CONSTRAINT `FK_1A11D1BA86AEDC4C` FOREIGN KEY (`regular_discount_id`) REFERENCES `plg_eccube_payment_lite42_regular_count_discount` (`id`),
  CONSTRAINT `FK_1A11D1BA9B418092` FOREIGN KEY (`class_category_id2`) REFERENCES `dtb_class_category` (`id`),
  CONSTRAINT `FK_1A11D1BAB0524E01` FOREIGN KEY (`sale_type_id`) REFERENCES `mtb_sale_type` (`id`),
  CONSTRAINT `FK_1A11D1BABA4269E` FOREIGN KEY (`delivery_duration_id`) REFERENCES `dtb_delivery_duration` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
2023-08-29
  • ec-cube