2012-02-29 2 views
-2

나는 opencart에 버그를 발견했다. 그래서 추천 된 모듈에는 제품을 제안하는 자동 완성 상자가 있지만 전체 묶음을 건너 뛰는 것처럼 보인다.mysql 같은 문제

TI | 83 | Brand New 
TI | 83 | Like New 

그것은 단지 그들 중 하나를 찾아서 : 내가 예를 들어 수동으로 쿼리를 실행하면

SELECT * 
FROM calcproduct p 
LEFT JOIN calcproduct_description pd ON (p.product_id = pd.product_id) 
WHERE pd.language_id = '1' AND LCASE(pd.name) LIKE 'ti %' 
GROUP BY p.product_id 
ORDER BY pd.name ASC LIMIT 0,20 

내가 두 제품을 가지고 모두가이 데이터베이스 쿼리에 종기 같은 코드를 검사 한 후이 보인다 그것은 다른 제품들에서도 마찬가지입니다. 누군가 이런 일이 일어나는 이유를 전혀 모른다.

쿼리의 비슷한 부분이되어야합니다. 그룹을 정렬하여 가져오고 첫 번째 where 절까지 가져와야합니다. 열을 utf_8에서 latin_1으로 변경하려고 시도했습니다. enter image description here

+2

검색어는'ti '다음에 공백을 찾습니다. 그 행 중 하나에 공백이 없습니까? 'LIKE 'ti %''는 'LIKE'ti % ''이어야합니다 ?? –

+0

"group by"절을 제거한 경우 다음 제안은 calcproduct 레코드와 calcproduct_description 레코드가 모두 있는지 확인하는 것입니다. 왼쪽 조인을 사용하더라도 "where"절은 "pd.name"및 pd.language 값에 대한 참조를 포함하므로 각 테이블의 레코드가 있어야합니다. – aingram

+0

만약 내가 '%'를 좋아한다면 그들은 둘 다 나타나서 내가 생각하기에 그것이 특정하게 내가 생각하는 비슷한 절과 관련이 있다고 생각하지 않는다. – DevTeamExpress

답변

0

표시되지 않은 제품 이름 앞에 공백이 있다는 것을 알아 냈습니다.

2

83가 p.product_id 필드 인 경우

enter image description here

enter image description here

, 당신은 오직 두 행 중 하나를 얻을 것입니다. 두 개 이상의 행이 같은 값을 갖는 그룹화 된 필드는 단일 행으로 축소됩니다.

+0

'그들 각각은 고유 한 제품 ID를 가지고 있지 않습니다. – DevTeamExpress