sourcecode

MYSQL의 2개의 개별 테이블에서 사용 가능한 모든 행에 대해 피벗 테이블엔트리를 작성하는 방법

copyscript 2022. 11. 7. 22:40
반응형

MYSQL의 2개의 개별 테이블에서 사용 가능한 모든 행에 대해 피벗 테이블엔트리를 작성하는 방법

두 개의 개별 테이블에서 사용할 수 있는 모든 행에 대해 피벗 테이블 엔트리를 작성하려면 도움이 필요합니다. 기본적으로 두 개의 개별 테이블이 있습니다.services그리고.plans아래와 같이

  1. 계획표
아이디 이름. 묘사
1 첫 번째 계획 플랜 1의 설명
2 플랜2 플랜 2의 설명
  1. 서비스 테이블
아이디 이름.
1 서비스 원
2 서비스 2

및 피벗 테이블service_plan여기에서는 아래와 같이 요금제와 서비스의 ID를 추가 컬럼과 함께 저장하고 있습니다.

아이디 service_id plan_id 가격.
1 1 1 200
2 1 2 200

SQL 쿼리에서 사용 가능한 모든 플랜을 더미 가격으로 모든 서비스에 할당하면 됩니다.service_plan테이블은 이렇게 생겼을 것이다

아이디 service_id plan_id 가격.
1 1 1 200
2 1 2 200
3 2 1 200
4 2 2 200

어떤 도움이라도 감사히 받겠습니다.

당신의 질문에 따르면 이것이 당신이 원하는 결과를 얻기 위해 실행할 수 있는 가장 간단한 질문이라고 생각합니다.

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

왜 크로스 조인(cross join)에 대한 저항인가?

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)

언급URL : https://stackoverflow.com/questions/72811672/how-to-create-pivot-table-entries-for-all-of-the-rows-available-in-two-separate

반응형