2012-05-25 6 views
1

상황. CS-Cart는 옵션/변형 테이블에 대해 다음과 같은 구조를 가지고 있습니다.

[variant_options] 테이블에는 [조합] 열이 있습니다.
[조합] 저장 [option_id][variant_id]
[option_id]가 [variant_id] 즉, 1_2, 1_3 ...
올바른 옵션을 일치 시키려면 밑줄 그것은 각 제품에 대한 변형입니다. 이러한 가치를 참조 할 수 있어야합니다. LEFT JOIN variant_name ON variant_name.variantid = (조합 열의 밑줄 뒤에 오는 값)

어떻게해야합니까? 감사합니다MYSQL의 1 열의 두 값과 일치하는 방법

+0

및 optionid = (밑줄 앞의 값) – jason3w

답변

1
SELECT * 
FROM combination c 
LEFT JOIN 
     option o 
ON  o.id = SUBSTRING_INDEX(c.combination, '_', 1) 
LEFT JOIN 
     variant v 
ON  v.id = SUBSTRING_INDEX(c.combination, '_', -1) 
+0

굉장합니다! 치료를합니다. 그것은 단지 더 복잡하게되었다. 제품에 더 많은 옵션을 추가하면 조합 문자열이 옵션 # _variation # _option # _variation # 등 (1_1_2_4)이됩니다. 더 이상의 아이디어? – jason3w

+0

@ jason3w : 다른 질문으로 게시하십시오 – Quassnoi

+0

done. http://stackoverflow.com/questions/10753611/how-do-i-join-based-on-values-in-a-delimited-string-in-mysql – jason3w

관련 문제