2017-10-23 1 views
0

하나의 다중 값 필드 내에 특정 값이있는 모든 행을 반입하려고합니다. 예제에서 표현하는 것이 더 쉽다고 생각합니다.모든 행을 반입하는 SQL 쿼리

Table Cars: 

Car_Brand : Toyota 
Available_Colors: green, blue 

Car_Brand : Ferrari 
Available_Colors: blue 

Car_Brand : Dodge 
Available_Colors: green 

Car_Brand : Kia 
Available_Colors: pink, blue 

그래서 내 테이블은 자동차이고 각 행에는 필드가 2 개뿐입니다. 첫 번째 "Car_Brand"는 간단한 문자열 필드입니다. 두 번째 필드는 다중 선택 입력으로 생성 된 다중 값 필드입니다.

  1. 가 파란색 avaiable이다 모든 차를 가져 오기 :

    나는이 일을하고 싶다.

  2. 파란색과 녹색으로 제공되는 모든 차량을 가져옵니다. 내가 지금까지 시도 무엇

:

SELECT * FROM Cars WHERE Available_Colors IN ('blue'); 

이 (KIA 또는 TOYOTA없이) 만 Ferrary을 가져.

그게 지금까지 내가 달성 한 모든 기능입니다. 나는 많이 보았지만 찾을 수있는 것은 IN 연산자를 사용하여 다른 단일 값 필드 (WHERE country IN ('Germany', 'Japan'))가있는 행을 많이 얻었 기 때문에 모든 도움을 받으실 수 있습니다. ..

편집 :

내가 오픈 소스 프로젝트 (vTiger) 함께 일하고 그래서 나는 모든 데이터베이스를 구축하고 있지 않다, 그러나 단지 vTiger 통해 데이터를 그것에서 정보를 가져 오는 또는 입력 작업 체계. 따라서 나는 DB가 실제로 어떻게 구성되어 있는지에 대해 다소 제한적인 지식을 가지고있다.

그러나 내 쿼리에 LIKE 연산자를 사용하면 내 필요에 따라 문제가 해결되었습니다.

+1

값을 CSV로 저장하는 것은 ** 매우 나쁨 ** db 디자인입니다. 정규화에 대해 자세히 알아보십시오. On only csv 목록에없는'Available_Colors' 열에서 하나의 단어로 'blue'를 찾습니다. – Jens

+0

지금 변경할 수없는 경우 SELECT * FROM Cars WHERE Available_Colors LIKE '% blue %'또는 Available_Colors LIKE '%녹색%'; – PSK

+0

데이터베이스를 수정하여 자동차 당 하나의 행과 색상 당 하나의 행을 가진 'CarColors'라고하는 다른 테이블을 갖도록하십시오. –

답변

0

그것은 아주 나쁜 데이터베이스 설계

의 당신은 시도 할 수

쿼리 : 자동차 SELECT * FROM WHERE Available_Colors LIKE '% 블루 %'

다른 솔루션 :

수정 귀하의 데이터베이스 그래서 당신은 다른 테이블을 가지고, CarColors, 자동차 당 하나의 행과 함께 색상 당 행.

관련 문제