2012-08-06 2 views
0

더 정확한 문제로 편집되었습니다 :
테이블 : id, supplierCode, propertyCode, specification이 있습니다. 제품에서 검색을 수행하면서 사양에 value1 및 value2와 같은 텍스트가 있으므로 해당 제품을 얻으려면 다음과 같은 쿼리를 원합니다.
SELECT * FROM tbl WHERE (specification LIKE '%value1%' OR specification LIKE '%value2%') AND (those 2 got rows has the same supplierCode)
또는 다른 측면에서 : 모든 공급 업체 코드 얻기
ID supplierCode propertyCode, 명세서
1 001,234 11 I7 - blabla
2 001,234 13 15.3 "동일한 supplierCode 가진 곳이든 행은 '%의 VALUE1 %의'AND LIKE '%의 값 2 %의'
예 LIKE 명세서 열에 갖는다
3 004321 15 i7-9761
4 004321 16 15.4 " 5 003214 14 i7-15.3 "mysql은 같은 열 값을 가진 여러 값을 검색합니다.

그리고 내가 'I7'와 '15 .3 찾고 있어요 경우" '내가 0을 얻을 수 있고 003214 그들은 I7과 사양 15.3 "

+0

'LIKE'연산자로 검색을 시도하십시오. – Ulterior

+0

'='를 사용하는 경우가 아니라 '사용'을 사용하는 경우에만 '%'만 필요합니다. 'IN' 문은 이미 OR 연산자를 사용하는 것이 더 좋을 것입니다 – arnoudhgz

답변

0

사용 LIKE있다 렸기 때문에 사양 값이 IN 대신 OR의 사용으로 당신이 확신하는 경우 대신 = sign

SELECT * 
FROM tbl 
WHERE (
     specification LIKE CONCAT('%', value1, '%') OR 
     specification LIKE CONCAT('%', value2, '%') 
    ) AND 
     propertyCode = valueHere 

의하지만

,932 (실제로는 동일) 10
+0

그의 문제는 "AND (동일한 propertyCode가 있습니다)" – Razvan

1

당신은 IN 절을 사용할 수 있습니다. 확실히이 문제를 좀 더 연구하십시오. 확실히 웹 어딘가에서 해결책을 찾았을 것입니다.

SELECT * FROM tbl 
    WHERE specification IN ('value1', 'value2') 
     AND propertyCode = 'SOME_VALUE' 
+0

ups, srry, 'LIKE'가 아니라 '=' –

0
SELECT * FROM tbl 
WHERE (specification='%value1%' OR specification='%value2%') 
group by propertyCode  
0
$find = mysql_query("SELECT * FROM `tbl` WHERE (`specification` LIKE '%$value1%' OR `specification` LIKE '%$value2%') AND `propertyCode`='$propertycode'")or die(mysql_error()); 
$display = mysql_fetch_array($find); 

베어 당신이 PHP 변수를 변경해야합니다 키워드처럼 을 사용할 수 있습니다 당신은 위와 같은 것을 찾고 있습니다.

또한 목록을 만들려는 경우 가져 오기에서 while 문을 사용해야합니다.

관련 문제