2011-02-04 7 views
1

고객 주문을 나열하는 InnoDB 테이블이 있습니다.이 테이블에는 고객의 전자 메일 주소, 주문 연락처 정보 및 주문 ID가 기록됩니다. 이 테이블은 innodb를 사용하며 대략 2 억 2 천만 개의 행을 포함합니다. 내가 갖고 있지 않은 것은 사용자를 나열하는 테이블입니다.InnoDB를 사용하여 외래 키로 테이블 생성 및 채우기

내 주문 테이블에있는 데이터의 customer_ide-mail 주소를 포함 할 테이블을 작성하고 채울 수있는 외래 키를 사용할 수 있습니까?

내가 지금까지 가지고 그 쿼리입니다 :

INSERT INTO customers (email, last_order) 
    SELECT (email_address, order_date) FROM orders 
ON DUPLICATE KEY 
    UPDATE last_order = MAX(order_date, last_order); 

나는이 쿼리는 데이터베이스를 구축 할 것입니다하지만 주문 테이블의 행에 고객 ID를 넣어하지 않습니다 믿고, 나는 시작하는 것이 가장 좋은 방법인지 확실하지 않습니다. 어떤 제안?

+0

실패하지 않는다면 나에게 좋을 것 같습니다. – Nishant

답변

3

당신은 2 단계에서이에게 그것을 얻을 수 있습니다

1의 customers 테이블을 작성 :

INSERT INTO customers (email, last_order) SELECT email_address, 
max(order_date) as last_order FROM orders GROUP by email_address; 

둘째, 당신은 필드 customer_id라는이 가정 (고객의 식별자로 orders 테이블을 업데이트

UPDATE orders o SET customer_id = 
    (SELECT id FROM customers WHERE email = o.email_address); 

마지막으로 orders 표)에, 당신은 당신의을 유지하려는 경우테이블이 일치하면 AFTER INSERT TRIGGER 테이블을 orders 테이블에 추가하여 customers 테이블을 최신 상태로 유지할 수 있습니다.

관련 문제