2010-07-27 5 views
0

각 병이 $ 4 ~ $ 8 사이에있는 와인을 사고 싶습니다. 제품 테이블에있는 비용은 모두 12의 경우에 있습니다. 쉽지요? 다른 필드를 기반으로 필드를 나누는 쿼리를 작성하는 방법은 무엇입니까?

SELECT `id` 
    FROM `products` 
WHERE (`cost`/12) > 4 
    AND (`cost`/12) < 8 

지금, 그들은 6. 이것은 단지 6 pack와 제목 문자열에 정의되어 있다고 가정의 경우를 판매하기 시작했다.

가격/12가 범위 내에있는 와인의 모든 사례를 선택하거나 제목 문자열에 6 pack이 포함되도록 쿼리를 작성하려면 대신 6으로 나누십시오.

하나의 검색어로 가능합니까?

감사합니다.

답변

2

예, 'percase'입력란을 추가하는 것이 좋습니다. 문자열 비교는 가장 빠른 작업이 아닙니다.

`cost`/IF(`title` LIKE '%6 pack%', 6, 12) 
+0

답변 해 주셔서 감사합니다. 나는 이것을 깨달았지만 오픈 소스 전자 상거래 패키지 위에 구축하고 그것을하기 쉬운 방법을 찾고 있었다. 그러나 성능이 떨어지면 잘 할 수 있습니다. – alex

0

데이터베이스 서버에 따라 정규 표현식이나 문자열 함수를 사용하여 특정 패턴을 찾고 수량을 추출 할 수 있습니다. 또는 외부에서 테이블에 대한 다른 처리를 수행하여 java 또는 .net 또는 다른 스크립팅 언어를 사용하여 새 열을 추가 할 수 있습니다.

SELECT 
`id`, 
SomeRegexFunctionOrStringFunction(description) quantity 
FROM `products` 
WHERE (`cost`/quantity) > 4 
    AND (`cost`/quantity) < 8 

즐기십시오!

관련 문제