mariadb 如何在MYSQL中为两个独立表中的所有行创建数据透视表条目

4uqofj5v  于 2022-11-08  发布在  Mysql
关注(0)|答案(2)|浏览(97)

我需要帮助为两个单独的表中的所有行创建数据透视表条目,基本上,我有两个单独的表servicesplans,如下所示
1.计划表
| 标识符|姓名|说明书|
| - -|- -|- -|
| 一个|计划一|计划一说明|
| 2个|计划二|方案二说明|
1.服务表
| 标识符|姓名|
| - -|- -|
| 一个|服务一|
| 2个|服务二|
和服务的Id,并有一个额外的列来存储价格,如下所示。
| 标识符|服务标识|计划标识|标价|
| - -|- -|- -|- -|
| 一个|一个|一个|二百个|
| 2个|一个|2个|二百个|
现在,我只需要一个SQL查询来为所有服务分配所有可用的计划,其中包含一个虚拟价格,因此service_plan表将如下所示
| 标识符|服务标识|计划标识|标价|
| - -|- -|- -|- -|
| 一个|一个|一个|二百个|
| 2个|一个|2个|二百个|
| 三个|2个|一个|二百个|
| 四个|2个|2个|二百个|
任何帮助都将不胜感激,谢谢。

kjthegm6

kjthegm61#

根据你的问题,我认为这是最简单的查询,你可以运行得到你想要的结果。

insert into service_plan (service_id, plan_id, price) select s.id, p.id, 200 from services as s cross join plans as p
bxjv4tth

bxjv4tth2#

为什么要抵制交叉联接?

drop table if exists PLANS,SERVICES,SERVICE_PLAN;

create table plans
(id int,name varchar(100),  description varchar(100));
insert into plans values
(1, 'plan one'  ,'description for plan one'),
(2, 'plan two'  ,'description for plan two');

create table services
(id int, name varchar(20));
insert into services values
(1  ,'service one'),
(2  ,'services two');

create table service_plan
(id int auto_increment primary key, service_id int, plan_id int, price int not null default 200);

insert into service_plan(service_id,plan_id) 
select s.id,p.id
        from plans p
cross join services s
order by s.id,p.id;

select * from service_plan;

+----+------------+---------+-------+
| id | service_id | plan_id | price |
+----+------------+---------+-------+
|  1 |          1 |       1 |   200 |
|  2 |          1 |       2 |   200 |
|  3 |          2 |       1 |   200 |
|  4 |          2 |       2 |   200 |
+----+------------+---------+-------+
4 rows in set (0.001 sec)

相关问题