2012-07-15 2 views
3

필드가 간단한 수학 표현 (내 경우에는 부문)을 준수하는 모든 제품을 선택해야합니다.SQL SELECT 쿼리에서 간단한 수학을 수행하는 방법?

예 검색어 :

SELECT * FROM cars WHERE (retail_price/invoice_price)>1.05 

요구를 유연하게 : 나는 그것을 다른 곳 문자열로 표현을 정의하고 단지 팝업 할 수 있도록하고자하기 때문에
내가 여기에 유연성을 필요로 WHERE 절 다음의 SQL 쿼리

$expression = "(retail_price/invoice_price)>1.05"; 
$query = "SELECT * FROM cars WHERE ".$expression." LIMIT 1"; 

주 :
- retail_price의 데이터 유형은 VARCHAR
입니다 - invoice_price의 데이터 유형이 VARCHAR
입니다 - VARCHAR 비록 금전적 가치에 적합한 지 확실하지 ..

어떤 제안 ? 위의 것은 나를 위해 작동하지 않았기 때문에. (0 개의 결과가 반환 됨)

+3

무엇이 문제입니까? 그게 네가하는 방법이야. 이 결과가 나오지 않으면 판매/인보이스 가격 비율이 1.05입니다. –

+2

retail_price 및 invoice_price의 데이터 유형은 무엇입니까? 꼭해야 할 때 결과를 얻지 못하면 반올림 문제 일 수 있습니다. –

+0

표현식이 내 테이블의 데이터와 일치해야합니다. 하지만 두 번 확인해 볼게. 표정 자체가 정확하다는 것을 아는 것이 좋다. 감사. – sean

답변

11

(반올림 문제 일 수 있습니다. @Justin이 말했듯이).
이 시도 :

SELECT * FROM cars WHERE (1.0 * retail_price/invoice_price) > 1.05 

아이디어는 (부동 소수점 수의 1.0 곱) 수레를 관리하는 엔진을 강제하는 것입니다.

업데이트 :
방금 ​​데이터 유형을 VARCHAR로 편집했습니다.
어쨌든 결과는 (나를 위해) 동일합니다 : 보시려면 http://sqlfiddle.com/#!2/298d3/2

+0

예. 당신은 절대적으로 옳습니다. 쿼리는 문제없이 결과를 반환합니다. 멋진 사이트 (sqlfiddle)! 북마크 됨. 문제는 관련없는 스크립트의 다른 부분에서 발생했습니다. 하하. 마르코와 다른 사람들에게 감사드립니다! – sean

관련 문제