2016-06-02 4 views
0

im noob 제발 도와주세요.가입 데이터 - 행의 개수는?

id, options1, options2, options3 
----------------------------------------- 
1, 'a', 'b', 'c' 
2, 'x', 'b', 'c' 
3, 'c', 'b', 'd' 
4, 'z', 'b', 'c' 

표 2

id, productid, name 
------------------- 
1, 1, "Title" 
2, 1, "Color" 
3, 2, "Title" 
4, 3, "Title" 
5, 4, "Title" 
6, 4, "Color" 
7, 4, "Size" 

// PRODUCT_ID에 대한 행의 다른 수 (최소 = 0, 최대 = 3)

얻는 방법 : 표 3

productid, new_name 
-------------------- 
1, "Title a; Color b; c" 
2, "Title x; b; c" 
3, "Title c; b, d" 
4, "Title z; Color b; Size c" 

답변

0

좋아요, 나는 의견을 남기고 싶지만 명성 점수가 없지만 당신을 도와주고 싶습니다.

스키마가 약간 잘못되었습니다. 이 테이블은 ID 또는 productID로 조인 할 수 있어야합니다.

select table2.productid, * from table1 
full outer join table2 on table1.id = table2.id 

또는

select table2.productid, * from table1 
full outer join table2 on table1.id = table2.productid 
: 다음 쿼리를 실행하면 당신이 당신이 원하는 결과를 생성되지 않고 표 2 제품에 표에 옵션을 장착 할 수있는 방법이 없다는 것을 알 수 있습니다

당신은 표 2를 해결할 수 있습니다

table2 
productid 
id 
value1 as nullable 
value2 as nullable 
value3 as nullable 

나는 즉석에서이 테이블을 해킹 내 데이터베이스에서 이러한 테이블이 없기 때문에 :

를 0
select 1 as id , 1 as productid , 'Title' as value1,'Color' as value2, null as value3 union 
select 2 as id , 2 as productid , 'Title' as value1, null , null union 
select 3 as id , 3 as productid , 'Title' as value1, null , null union 
select 4 as id , 4 as productid , 'Title' as value1, 'Color' as value2, 'Size' as value3 

옵션은 그 값과 일치 이러한 방법 :

select 
    value1, options1, 
    value2, options2, 
    value3, options3 
    from table1 join table2 on table1.id=table2.id 

이 더 필요한 결과를 얻을 수

select 
    productid, 
    coalesce(value1,'') +' '+ coalesce(options1,'') + '; ' + 
    coalesce(value2,'')+' '+ coalesce(options2,'') +'; '+ 
    coalesce(value3,'')+' '+ coalesce(options3,'') as new_name 
    from #tb3 join #tb1 on #tb3.id=#tb1.id 

로 정제 할 수있다 : 그러나

productid new_name 
----------- ------------------------ 
1   Title a; Color b; c 
2   Title x; b; c 
3   Title c; b; d 
4   Title z; Color b; Size c 

을 , 더 나은 접근법은 별도의 옵션으로 다른 테이블을 생성하는 것입니다. 그 테이블에는 1 개 또는 여러 옵션 (3 개 이상)이있을 수 있습니다.

이것이 맞는다면 답을 표시하십시오. 감사합니다

+0

고마워,하지만 어떻게 변환 table2 -> http://prntscr.com/bbkmyr – ans

+0

당신은 새 테이블을 만들고 그 대신 table2를 사용해야합니다. 여기 table2 예제는 각 옵션의 사용 방법을 설명하지 않습니다. 프로덕션에 이미 테이블을 가지고 있습니까? 아니면 프리스트 타임에 이것을하고 있습니까? 테이블이 있다면 어쩌면 해결책은 그 주위에 있어야하며 각 id에 대해 하나의 옵션 만 갖도록 table1을 수정해야합니다. –