2013-08-31 1 views
0

표준 램프 환경을 사용하고 있습니다. 쿼리 결과뿐만 아니라 조건에 맞지 않는 결과를 리턴한다는 사실을 제외하면 작동하는 것처럼 보이는 MySQL 쿼리를 작성했습니다.일치하는 레코드뿐만 아니라 일치하지 않는 쿼리를 반환하는 MySQL 쿼리

$sql = "SELECT items.code, cats.cat_name, cats.id 
     FROM items, cats 
     WHERE cats.cat_name LIKE concat('%', items.code, '%') "; 

incudes 모두 일치하는 레코드 (items.code & cats.cat_name)에 재선되는 결과 그러나 상기 입수해온 결과 버리도 일치하지 않는 cat_names를 나타낸다.

+0

'items.code' 및'cat_name' 열은 어떤 데이터 유형입니까? Btw : * 이름 * 열에 * 코드 *를 매치 시키거나 이상한 명명 규칙을 사용하면 이상한 데이터 모델처럼 들립니다. –

+0

데이터 유형은 모두 varchar (32)입니다. 동의합니다. items.code 필드를 이상하게 사용하십시오 ~ 시스템을 사용하는 회사가 의도 한 것보다 다른 목적으로 items.code를 사용하고 있습니다. 제한된 예산으로 비영리 단체이므로 너무 많은 맞춤 설정을 할 여유가 없습니다. –

답변

1

코드에 null 또는 빈 문자열이있는 항목에는 적어도 하나의 행이있는 것으로 추측됩니다. 모든 고양이 행은 항목의 행과 결합됩니다.

+0

나는 다음을 추가했습니다 : AND items.code NOT LIKE ''그러면 예상 결과가 나옵니다. 이는 % 와일드 카드가 비어있는 필드와 일치 함을 의미합니까? –

+0

@ johnfox 물론. * % *는 정의에 따라 0 개 이상의 문자와 일치합니다. –

관련 문제