2012-11-21 4 views
1

안녕하세요, 제 데이터베이스에 테이블이 있습니다.하나의 열 값을 여러 열로 업데이트하십시오. mysql

ShopID | ParentID | SELL 

1   0  2,3 
2   1  1,2,3 
3   1  2,3,4 
4   0  5,6 
5   4  5,6,7 
6   4  6,7,8 

내가 부모 가게의 SELL 값으로 아이들에게 SELL 값을 추가 할 수 있지만 중복 값을 추가하고 싶지 않아,

마침내 내가이

ShopID | ParentID | SELL 

1   0  1,2,3,4 
2   1  1,3 
3   1  2,4 
4   0  5,6,7,8 
5   4  5,7 
6   4  6,8 
같은 테이블을 갖고 싶어

MySQL으로 가능합니다. 미리 감사드립니다.

+4

그렇게하지 마십시오. 한 열에 2 개 이상의 값을 저장하지 마십시오. 이것은 DB 디자인의 첫 번째 정규화 형식을 위반합니다. –

+0

@ juergend, 조언을 주셔서 대단히 감사합니다. –

+0

@juergend,하지만 지금은 당신이 제안하고있는 변화를 할 수는 없지만, 내 질문에 대한 답이 있습니까? 제발 도와주세요 : ( –

답변

2

시험해보기 :

SELECT s1.shopid, s1.parentid, IFNULL(s2.sales, s1.SELL) SELL 
FROM shop s1 
LEFT JOIN (
    SELECT parentid, GROUP_CONCAT(sell) sales 
    FROM shop 
    GROUP BY parentid 
)s2 ON s1.ShopId = s2.parentid; 

SQL FIDDLE DEMO

업데이트 쿼리 :

update shop 
    SET SELL=s.SELL 
    from shop join (select s1.shopid,s1.parentid,ifnull(s2.sales,s1.SELL) SELL from shop s1 left join 
    (select parentid,group_concat(sell) sales from shop 
    group by parentid) s2 
    on s1.ShopId=s2.parentid) s 
    on shop.shopid = s.shopid 
+0

대단히 감사드립니다. :) –

+0

안녕하세요. 솔루션은 작동하지만, 이제 상위 열에 중복 값이 ​​포함됩니다. 어떻게 내가 그들을 제거 할 수 있으며, 또한 업데이트 쿼리가 필요합니다 –

+0

여기서 중복은 pls를 지적 할 수 있습니까? – AnandPhadke

1

새 열을 만드는 것이 좋습니다.

처럼 :

ShopID | ParentID | SELL | Total Sell 

그러나 가장처럼 기록 당 하나 개의 값을 저장하는 것입니다 : 당신은 쉽게 데이터를 조작 할 수있을 것보다

ShopID | ParentID | SELL 

1   0  2 
1   0  3 

...

CREATE TABLE IF NOT EXISTS `sellforce` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `ShopID` int(11) NOT NULL, 
    `ParentID` int(11) NOT NULL, 
    `Sell` int(11) NOT NULL, 
    PRIMARY KEY (`id`) 
) 

INSERT INTO `sellforce` (`ShopID`, `ParentID`, `Sell`) VALUES 
(1, 0, 2), 
(2, 1, 1), 
(1, 0, 3), 
(2, 1, 3); 

CREATE VIEW `sellforce1` AS select `sellforce`.`ShopID` AS `ShopID`,`sellforce`.`ParentID` AS `ParentID`,group_concat(distinct `sellforce`.`Sell` separator ',') AS `GROUP_CONCAT(DISTINCT ``Sell``)` from `sellforce` group by `sellforce`.`ShopID`; 
+0

안녕하세요, 이것은 삽입 쿼리입니다. 업데이트 쿼리를 사용하여 mwe를 도울 수 있습니까? 어떤 방법으로도 도움을 주셔서 감사합니다. –

관련 문제