검색을 위해 기사 콘텐츠의 전체 텍스트 색인을 구성하는 두 개의 테이블이 있습니다. 테이블 중 하나는 단어와 연관된 기본 키일 뿐이지 만 다른 레코드는 발생한 기사와 문서에서의 위치를 기록합니다. 한 단어가 여러 위치에있는 동일한 문서에 여러 번 나타날 수 있으므로 동일한 단어 ID가 word_locations 테이블에서 여러 번 나타날 수 있습니다.하나의 테이블에서 다른 테이블의 ID로 MySQL 결합 수를 계산하십시오.
단어 : 여기
는 구조입니다id bigint
word tinytext
word_location : 내가 뭘 작성해야하는 각 단어에 대한 위해 발생의 수를 찾을 수 쿼리가
id bigint(20)
wordid bigint(20)
location int(11)
article_id int(11)
하나의 프로필. 나는 전혀 나타나지 않는 wordid에 대해 0 값을 유지해야하므로이 값이 왼쪽 조인이어야한다고 가정합니다. 그러나 기사를 제한하기 위해 where 쿼리를 추가하려고 할 때마다 전혀 나타나지 않는 wordid는 결과 집합에 포함되지 않습니다.
이 나는 시도했다 :
select words.wordid, COUNT(word_location.wordid) as appears from words left join word_location on word.id = word_location.wordid where article_id = %s GROUP BY wordid
그러나이 쿼리는 전혀 나타나지 않는 단어 0을 반환하지 않습니다.
어떻게이 왼쪽 결합을 수정할 수 있습니까?
미리 감사드립니다.
EDIT : 여기
설정 예 데이터와 다른 쿼리에 대한 결과 집합이다.
예 기사 내용 :
그래서 어휘 테이블, 중지 단어를 제외하는 응용 프로그램에 의해 조정 된 후,밥의 레스토랑은 최고의 터키 요리를 즐길 수있는 더 큰 카운티에서 최고의 레스토랑 중 하나입니다.
Bob
,
Restaurant
,
finest
,
greater
,
county
,
enjoy
,
Turkish
및
cusine
에 대한 어휘 행에있을 것이다. - 단어 - wordid 차례 나오는 : (이 세트에서 첫 번째 이후 나는이 실제 기사를 사용하고 있기 때문에 IDS 실제로 정수부터 표시 1.
@ 마크 베니 스터가 제공하는 쿼리는이 설정 결과를 생성
128 clifton 0
1 bob's 2
2 restaurant 2
3 one 1
4 finest 3
5 restaurants 2
6 greater 1
9 county 1
12 enjoy 3
13 turkish 6
14 cuisine 1
결과 집합 자체는 정확하지만, ID 128은 문서에 전혀 나타나지 않고 출현 횟수 0 인 결과 집합에서 유일한 것입니다. 목표는 전체 어휘를 number 문서의 출현 횟수 (대략 2500 단어)
내 원래의 문제 위의 편집 이전의 쿼리는 실제로 동일한 결과 집합을 반환했지만 발생 행이 전혀 없었습니다.
나는 당신이 말하는 것을 얻는다 고 생각하지만,이 쿼리는 오직 하나의 제로 양의 결과만을 생성하는 것처럼 보입니다. 그리고 나는 왜 그 특정한 것이 반환되었는지를 판단 할 수 없습니다. 그 외의 나머지 결과 집합은 원래의 잘못된 쿼리와 동일합니다. 감사! – DeaconDesperado
@DeaconDesperado, 질문에 샘플 데이터를 포함시킬 수 있습니까? –
물론 - 일반적인 데이터 또는 결과 집합의 예가 두 개의 다른 쿼리에 의해 반환됩니까? – DeaconDesperado