테스트 사이트 - 개발 중인 베타 버전입니다

상품순서 순차적으로 일괄변경 채택완료

렙비 4년 전 조회 3,158

안녕하세요. 항상 도움주셔서 감사합니다.

상품을을 최신꺼부터 올려서 최신께 가장 뒤에있는데 순서를 변경하려고 하는데 상품순서가 ㅁ낳아서요 

 

g5_shop_item 테이블에

it_order 부분을 순차적으로 변경하면 될거같은데

저는 한번에 변경하는 명령어만 알아서요 ㅠ 혹시이걸

 

특정부분에서 ~ 특정부분까지

1 , 2 , 3 , 4 , 5 이런식으로 순차적으로 적용되게 명령어를 못할까요?

 

update g5_shop_item set it_order = 1 where it_id > 71489; 

이런식인데 이건 모두 1로 바꾸는거라서요 ㅠ

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트
Big1
4년 전

</p>

<p>DROP TABLE IF EXISTS `zoo2`;

CREATE TABLE IF NOT EXISTS `zoo2` (

  `it_id` int(11) NOT NULL AUTO_INCREMENT,

  `it_order` int(11) NOT NULL,

  PRIMARY KEY (`it_id`),

  KEY `it_order` (`it_order`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;</p>

<p>INSERT INTO `zoo2` VALUES (1, 0);

INSERT INTO `zoo2` VALUES (2, 0);

INSERT INTO `zoo2` VALUES (3, 0);

INSERT INTO `zoo2` VALUES (4, 0);

INSERT INTO `zoo2` VALUES (5, 0);

INSERT INTO `zoo2` VALUES (71490, 0);

INSERT INTO `zoo2` VALUES (71491, 0);

INSERT INTO `zoo2` VALUES (71492, 0);

INSERT INTO `zoo2` VALUES (71493, 0);

INSERT INTO `zoo2` VALUES (71494, 0);

INSERT INTO `zoo2` VALUES (71495, 0);

INSERT INTO `zoo2` VALUES (71496, 0);

INSERT INTO `zoo2` VALUES (71497, 0);

INSERT INTO `zoo2` VALUES (71498, 0);

INSERT INTO `zoo2` VALUES (71499, 0);

INSERT INTO `zoo2` VALUES (71500, 0);</p>

<p>

 

단순하게 하면 

where 절의 it_id + 1 하면 되는데

it_id가 순차가 아닐때 중간에 이빨이 빠지므로

</p>

<p>UPDATE `zoo2` SET it_order = (it_id - 71490 + 1) WHERE it_id >= 71490;</p>

<p>

 

서브쿼리를 사용해봤더니

업데이트가 반영된 max를 못 뽑아옵니다

</p>

<p>UPDATE `zoo2` SET it_order = (SELECT * FROM (SELECT MAX(it_order) FROM `zoo2` WHERE it_id >= 71490) AS t) + 1 WHERE it_id >= 71490;</p>

<p>

 

그래서 순차값을 입력하기 위해

</p>

<p>SELECT @num:=0;

UPDATE `zoo2` SET it_order = @num:=@num+1 WHERE it_id >= 71490;</p>

<p>

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

B
Big1
4년 전
그런데,
영카트 상품테이블 it_id type이 varchar 라는 점
it_order가 같고 따로 order by 하지 않으면 primary key인 it_id 로 정렬된다는 점
(it_order를 상품테이블의 max(it_order) + 1 로 동일하게 해도 다음 정렬은 it_id 되므로 71490 이후의 상품을 동일하게 해도 무방)
https://github.com/gnuboard/youngcart5/blob/5.4.5.1/lib/shop.lib.php#L63
렙비
4년 전
감사합니다. ^^ !

댓글을 작성하려면 로그인이 필요합니다.

e
4년 전

update g5_shop_item set it_order = it_order + 1 where it_id > 71489; 

이걸 원하시는 건가요??

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

JYoung
4년 전

정확하게 어떤걸 원하시는지는 모르겠지만.. 서브쿼리를 활용해도 좋고 또는 PHP에서

쿼리를 두개 만들어서 순차적으로 업데이트를 하는 방법도 좋을거 같습니다~

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인