MySQL 分銷關系 經常用于代理商之間銷售產品或服務的層級關系,它是一個多層次的網絡銷售結構。MySQL 分銷關系主要包含一個上級代理商和下級代理商之間的交易。MySQL 分銷關系的實現主要依靠代理商和商品關聯表、商品表和訂單表三張表的結構。
CREATE TABLE `agent` ( `id` varchar(20) NOT NULL COMMENT 'ID', `name` varchar(50) NOT NULL COMMENT '代理商名稱', `pid` varchar(20) DEFAULT NULL COMMENT '上級ID', `level` tinyint(4) NOT NULL COMMENT '層級', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='代理商表'; CREATE TABLE `goods` ( `id` varchar(20) NOT NULL COMMENT 'ID', `name` varchar(50) NOT NULL COMMENT '商品名稱', `price` decimal(10,2) NOT NULL COMMENT '商品價格', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品表'; CREATE TABLE `order` ( `id` varchar(20) NOT NULL COMMENT 'ID', `agent_id` varchar(20) NOT NULL COMMENT '代理商ID', `goods_id` varchar(20) NOT NULL COMMENT '商品ID', `price` decimal(10,2) NOT NULL COMMENT '訂單價格', `create_time` datetime NOT NULL COMMENT '創建時間', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='訂單表';
在代理商和商品關聯表中記錄下級代理商和商品之間的對應關系。在訂單表中記錄訂單所屬的代理商和購買的商品信息。
CREATE TABLE `agent_goods` ( `id` varchar(20) NOT NULL COMMENT 'ID', `agent_id` varchar(20) NOT NULL COMMENT '代理商ID', `goods_id` varchar(20) NOT NULL COMMENT '商品ID', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='代理商和商品關聯表'; INSERT INTO `agent_goods` VALUES ('1', '1', '1'),('2', '2', '1'),('3', '3', '1'),('4', '4', '1'),('5', '5', '1'), ('6', '2', '2'),('7', '3', '2'),('8', '3', '3'),('9', '4', '3'),('10', '5', '3');
查詢代理商的下級代理商和已代理的商品列表,可以使用下面的SQL語句:
SELECT A.id, A.name AS agent_name, B.name AS goods_name FROM agent AS A LEFT JOIN agent_goods AS G ON A.id = G.agent_id LEFT JOIN goods AS B ON G.goods_id = B.id WHERE A.pid = '1';
統計代理商的訂單數和銷售額,可以使用下面的SQL語句:
SELECT A.name AS agent_name, COUNT(*) AS order_count, SUM(O.price) AS total_sales FROM agent AS A LEFT JOIN `order` AS O ON A.id = O.agent_id WHERE A.pid = '1' GROUP BY A.id;
使用 MySQL 分銷關系,可以輕松實現代理商的多層級別管理和銷售統計,方便代理商之間的合作和商業決策。
上一篇mysql 分鐘函數
下一篇mysql 分表方案