2009-10-15 3 views
0

쿼리에서 값 목록의 값 중 적어도 하나의 값이 값 목록의 적어도 하나의 값과 일치하는 모든 행을 반환 할 때 MySql을 쿼리하는 가장 좋은 방법은 무엇입니까?MySQL에서 일치하는 쿼리 ListOfValues ​​

예를

내 표는 다음과 같은 행이 포함 된 경우

:

name   groups 
item1  gr1, gr2 
item2  gr1,gr2,gr3 
item3  gr1,gr3 

을 내가 값의 목록을 가지고 : "GR3는, GR4, GR5"

나는 모든 행을 찾으려면 내 테이블에 그룹 필드에 gr3, gr4 또는 gr5 값 중 적어도 하나가 있어야합니다.

그래서이 경우에 쿼리 항목 2 돌아가서

가 어떻게 내 스크립트에서 반복하지 않고 효율적인 쿼리를 구성 할 수 있습니다 ITEM3해야합니까?

답변

2

개인적으로 나는 이것이 데이터베이스를 구성하는 최선의 방법이 아닐 것이라고 제안합니다. 내가 링크 테이블을 것이다, 각 항목 그룹 링크에 대해 하나 개의 행을 개최 할 item_groups 같은, 그래서 당신은 무엇을이있을 것입니다 :

item_name   group_name 
item1  gr1 
item1  gr2 
item2  gr1 
item2  gr2 
item2  gr3 
item3  gr1 
item3  gr3 

단순히

SELECT item_name FROM item_groups WHERE group_name IN ('gr3','gr4','gr5'); 

할 수있는이 방법 이것이 내가 BSc의 일부로 데이터베이스 이론을 다룰 때 배웠던 것이고, 더 많은 테이블을 만들어 냄으로써 더 빠르고 쉽게 검색 할 수 있습니다. HTH