2013-09-21 3 views
1

에 도움이 필요하십니까 :내가이 같은 쿼리하고있어 mysqlquery와 PHP

$c = filterfunction($_POST['data']); 

$sql="(descripcion LIKE '%".$c."%' or marca_repuesto LIKE '%".$c."%' or mod_nombre LIKE '%".$c."%' or anio LIKE '%".$c."%' or codigo LIKE '%".$c."%')"; 

$query = mysql_query(" 
SELECT id,user,modelo,marca,marca_repuesto,descripcion,tipo,anio,cantidad,precio_costo,precio_lista,chasis,motor,codigo 
FROM (repuestos left join marcas ON marca = m_id 
left join modelos ON modelo = mod_id) 
$sql 

"); 

모든 것이 괜찮습니다,하지만 난으로 분리 된 두 개의 식별자 repuestos.modelo 행에 추가하는 경우 ","작동하지 않습니다 , 그리고이 행의 여러 ID로 어떻게 작동하는지 모르겠습니다. 덕분에 많은 사람들이.

+0

그래서 'id, id' - 각각의'id '는 다른 테이블에있는 것입니까? 그렇다면'id as id1, id as id2' 또는 배열에 접근 할 때'-s '대신'$ row [0]'/'$ row [1] $ row [id]'/'$ row [id]' – Sean

+0

물론, id, id 또는 id, id, id, id를 repuestos.modelo에 추가 할 것입니다. 가장 좋은 방법은 repuestos.modelo없이 결과가 0 인 경우 respuestos.modelo를 폭발시켜 $ c에서 일치 항목을 검색하지 않고 내 쿼리를 적용하는 것이라고 생각합니다. 어떻게 생각해? 고마워 션. –

답변

0

당신이 물어 보는 질문에서 완전히 명확하지 않습니다.

단일 일치하는 ID를 검색하려면 여러 일치하는 식별자를 검색하려면, 당신은 또한

WHERE id IN (?,?,?,?) 

주의가 필요

WHERE id = ? 

필요로하는 당신의 OR LIKE 폭포

descripcion LIKE '%".$c."%' 
or marca_repuesto LIKE '%".$c."%' 
or mod_nombre LIKE '%".$c."%' 
or anio LIKE '%".$c."%' 
or codigo LIKE '%".$c."%' 

은 나쁜 성능을내는 공식입니다. MySQL (및 임의의 RDBMS)은

column LIKE '%value%' 

에 대한 인덱스를 사용할 수 없으므로 전체 테이블을 스캔해야합니다. MySQL이 OR을 만나면 테이블을 다시 스캔합니다.

이 응용 프로그램에 대한 전체 텍스트 검색을 조사 할 수 있습니다.

+0

감사합니다 존스, 네, 테이블 modelos repuestos.modelo에서 multible 일치 ID를 검색 싶습니다. 나는 칼럼 "% value %"와 같은 칼럼을 검색하려고합니다.하지만, "model"은 "Ferrari"와 같은 모델의 이름입니다. "Ferr"을 검색 할 때이 테이블과 다른 테이블에서 결과를 보여주고 싶습니다. 요소가 일치하는 경우 유감스럽게 생각합니다. –

+0

idk 어떻게 설명하지만, 기본적으로 내가하고 싶은 것은 "repuesto"설명을 검색하고, 결과가 == 0이면, 모델의 설명에서 matchen 검색 : http://i.imgur.com/X0OYWrG. PNG –