2009-06-26 5 views
1

테이블 제품중 하나는 관련 제품입니다. relatedproducts에는 콜론 (:)으로 구분 된 연결된 제품 ID (열 productid)의 문자열이 들어 있습니다. abc-123 : foo-prod : ada69 등이 있습니다. 잘못된 디자인으로 인해 제품 테이블에서 제품을 제거하고 관련 제품 열에서 참조 할 수있는 경우가 있습니다.MySQL은 정규 표현식을 기반으로합니다.

그래서 제품 테이블의 모든 행을 통과하는 SQL 쿼리가 필요합니다. 데이터를 폭발시켜 관련 제품 열을 검사하여 (제목을 폭발 시킴) 각 참조 된 제품이 동일한 제품 테이블에 있는지 확인합니다. 그러나, 나는 sql에서 초보자이며 이것을 수행하기 위해 join/regexp 쿼리를 작성하는 데 어려움이있다.

도움이 될 것입니다!

+2

를? 공통된 관련 제품 ID로 각 관련 제품을 개별적으로 나열하면 관리가 더 쉬워집니다. –

답변

3

MySQLregexp과 일치 할 수 있지만 일치하는 부분 문자열을 반환 할 수 없습니다.

당신은 더 나은 FIND_IN_SET을 사용하여 수행하면 relatedproducts에서 문자열을 연결된 한 이유는 무엇입니까

SELECT * 
FROM products p 
JOIN product rel 
ON  FIND_IN_SET(rel.id, REPLACE(p.related, ':', ',')) 
관련 문제