table 의 외래키 제약조건을 잘못하여서 수정하였다. 제약조건은 바로 수정이 없어서 먼저 설정하였던 제약조건을 삭제 후 다시 제약조건을 추가하면 된다.
제약조건 삭제
ALTER TABLE product_records DROP CONSTRAINT FK_product_records_product_id_products_id;
ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건;
제약조건 추가
ALTER TABLE product_records ADD CONSTRAINT FK_product_records_product_id_products_id FOREIGN KEY (product_id) REFERENCES products (id) ON DELETE CASCADE;
ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건이름 FOREIGN KEY (외래키컬럼명) REFERENCES 제약조건걸 테이블명 제약조건;
컬럼 추가
ALTER TABLE options ADD (product_number varchar(50));
ALTER TABLE 테이블명 ADD (컬럼명 컬럼타입);
group by/ join
일대다 테이블을 조인하여 일인쪽 테이블의 상품명이 중복되지 않게 다인쪽 상품번호를 임의로 한개만 선택하도록 하고 싶었는데 몇시간만에 해결하였다😅
SELECT * FROM products a JOIN (SELECT product_id, max(product_number) FROM options GROUP BY product_id)b ON a.id=b.product_id;
group by
는 집계함수(sum, max, min..)를 이용한 경우에만 사용할 수 있다. product_number중 하나만 임의로 선택하여 상품이름의 중복을 없애야 하기 때문에 max로 묶어주고 product_id로 group by 하여 참조하는 쪽 테이블인 상품 테이블과 조인하였다.