2014-12-30 2 views
0

내가있는 테이블의 내 MySQL의 책상에서 구조 = 255 shop_id하기 = 233 shop_id 한 몇 가지 범주를 복제 :업데이트 자체 조인 된 테이블

Table name: **t_category** 

fields: id, name, parent_id, shop_id 

지금은 shop_id = 255 이러한 복제 범주를 가지고, parent_id는 shop_id = 233의 카테고리와 관련이 있습니다. 복제 된 카테고리의 parent_id를 업데이트해야합니다.

SELECT p.id AS 'Parent', 
    c.id AS 'Child' 
FROM t_category c 
INNER JOIN t_category p ON p.id = c.`parent_id` and c.shop_id = 255 

가 어떻게 복제 범주의 상위 ID를 업데이트 할 수 있습니다

우선처럼 자체 조인을 쓰기 위해 노력하고 있어요?

+0

는 어떻게 복제 및 원래의 행을 구별 할 수 있습니까? –

+0

233의 카테고리에있는 parent_id를 각각의 카테고리에 255로 연관시킬 수있는 방법이 있습니까? –

+0

@TabAlleman 이름은 완전히 동일합니다. – Burak

답변

0

확인을, 내가 이해한다면, 당신은 각을 먹고 싶어 상점 255의 ID, 상점 233의 해당 ID 찾기, 해당 ID의 부모 가져 오기 (233), 상점 255의 해당 부모 찾기, 오른쪽?

MySQL 용 같은 아마 ..이게 내가 SQL 서버에 그것을 할 것입니다 방법이며, 각 숍에 중복 이름이없는 가정 :

UPDATE t255 
SET parent_id=p255.id 
FROM t_category t255 
INNER JOIN t_category t233 ON t255.Name=t233.Name AND t233.shop_id=233 
INNER JOIN t_category p233 ON p233.id=t233.parent_id 
INNER JOIN t_category p255 ON p255.Name=p233.Name 
WHERE t255.shop_id=255 
0

생각 당신이 부모 기록에 shop_id을 설정하려고 노력하고, 그래서 이런 일이 그것을 수행해야합니다

UPDATE t_category 
    SET shop_id = 233 
WHERE id IN (SELECT p.id from t_category c JOIN t_category p ON p.id = c.`parent_id` and c.shop_id = 255)