상품순서 순차적으로 일괄변경

상품순서 순차적으로 일괄변경

QA

상품순서 순차적으로 일괄변경

본문

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

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

 

g5_shop_item 테이블에

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

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

 

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

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

 

update g5_shop_item set it_order = 1 where it_id > 71489; 

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

이 질문에 댓글 쓰기 :

답변 3


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;
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);

 

단순하게 하면 

where 절의 it_id + 1 하면 되는데

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


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

 

서브쿼리를 사용해봤더니

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


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

 

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


SELECT :=0;
UPDATE `zoo2` SET it_order = :=+1 WHERE it_id >= 71490;

 

그런데,
영카트 상품테이블 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

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

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

 

답변을 작성하시기 전에 로그인 해주세요.
전체 190
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT