2014-04-10 3 views
0

다른 사이트에서 리뷰를 받고 테이블에 저장하고 있습니다. 각 리뷰마다 adjectivenoun 목록이 별도의 열에 표시됩니다.mys 테이블에서 단어 발생을 계산합니다.

각 리뷰마다 주요 3 가지 값이 있습니다.

review, adjective_list, rate

는 지금은 횟수가 반복 형용사 계산합니다. 그 후에 최대의 시간을 반복하고 재검토를받는 형용사를 가진 평론만을 추천하는 것 4-5.

이 작업을 수행하는 올바른 방법은 무엇입니까? 이것에 대해

내 생각 : 지금까지 삽입 검토 작업이있을 때 작업을 수행

만들기 트리거. 이 트리거는 형용사가있는 열을 읽고, 발생을 계산하고 (은 어떻게 알 수 있습니까?) 그 발생과 함께 상위 형용사를 저장합니다.

추천하는 동안 형용사를 최대로 선택하고 4-5 개의 평가를 검토합니다.

나는 정확한 방법이 확실하지 않습니다.

enter image description here

+1

형용사의 목록은 쉼표로 구분 된 단어가있는 문자열입니까, 아니면 각각의 형용사가 별도의 레코드에 속해 있습니까? –

+1

몇 줄의 샘플 데이터를 게시 할 수 있습니까? 나는 생각이있다 :) –

+0

@RaduGheorghiu : 고마워, 형용사를위한 한 칼럼이있다. 각 리뷰마다 쉼표로 구분 된 모든 adjetive 목록이 들어 있습니다. –

답변

1

테스트하지,하지만 난 당신에게 요구 사항을 이해한다면 정확하게 당신이 일을 이런 식으로 뭔가에 쿼리를 기반으로 할 수 있어야한다 : 어떤 도움을

홈페이지 표는 다음과 같습니다 감지 할 수 있습니다 : -

SELECT id, SUBSTRING_INDEX(SUBSTRING_INDEX(adj_noun, ',', aCnt + 1), ',', -1), COUNT(*) 
FROM Main_Table 
INNER JOIN 
(
    SELECT Units.i + Tends.i * 10 + Hundreds.i * 100 AS aCnt 
    (SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) Units 
    (SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) Tens 
    (SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) Hundreds 
) Integers_Query 
ON aCnt <= (LENGTH(adj_noun) - LENGTH(REPLACE(adj_noun, ',', ''))) 
GROUP BY id, SUBSTRING_INDEX(SUBSTRING_INDEX(adj_noun, ',', aCnt + 1), ',', -1) 

이 숫자 (0 ~ 999)의 범위를 얻을 수있는 하위 쿼리를 사용하고, 숫자보다 작거나 쉼표에 표시되는 시간의 수와 동일 어디 당신의 테이블에 대해이 조인 않습니다 adj_noun 열 (즉, subtrac t adj_noun의 길이에서 모든 쉼표가 제거 된 adj_noun의 길이). 그런 다음 SUBSTRING_INDEX를 사용하여 aCnt 쉼표까지 문자열을 가져온 다음 SUBSTRING_INDEX을 사용하여 해당 쉼표에서 이전 쉼표로 문자열을 가져옵니다 (결과에서 쉼표 제외).

COUNT/GROUP BY는 각 항목의 결과 목록에 각 단어가 나타나는 횟수를 가져와야합니다.

아마도 상당히 비효율적 일 것입니다. 쉼표로 구분 된 1000 개의 단어 만 처리합니다 (쉽게 확장되지만 속도는 느려집니다).

+0

정말 쿼리를 완전히 이해할 수 없지만이 종류의 쿼리는 백엔드에서 실행해야하거나 사용자가 데이터 항목을 쿼리 할 때 필요합니까? –

+0

이 쿼리는 행 목록, 각 id에 대한 각 단어 당 하나씩, 해당 id에 해당 단어가 사용 된 횟수의 수를 가져 오는 것입니다. 트리거에서이 값을 사용하여 ID를 지정하여 세부 사항을 가져 와서 다른 테이블을 채울 수 있습니다. 나는 당신이 출력을 필요로하는 바를 정확하게 확신 할 수 없기 때문에 이것은 값을 추출하는 방법의 예일 뿐이다. – Kickstart

관련 문제