Pergunta

Eu sou muito novo para SQL e tenho uma pergunta sobre nomes correspondentes de duas colunas localizadas dentro de uma tabela:

Vamos dizer que eu quero usar a função soundex () para combinar dois columsn. Se eu usar esta consulta:

SELECT * FROM tablename WHERE SOUNDEX(column1)=SOUNDEX(column2);

a linha é retornada se os dois nomes dentro desse jogo linha. Agora eu também gostaria de obter esses jogos de nomes entre column1 e column2 que não estão na mesma linha. Existe uma maneira de automatizar um procedimento pelo qual cada nome column1 é comparado com todos os nomes de column2?

Obrigado:)

P.S .: Se alguém pudesse me aponte na direção de um algoritmo de correspondência n-grama / bi-grama que é fácil para um noob de implementar em mysql que seria bom também.

Foi útil?

Solução

Se a tabela tem uma chave, digamos id, você pode tentar:

select A.column1, B.column2 
from tablename as A, tablename as B 
where (A.id != B.id) and (SOUNDEX(A.column1) = SOUNDEX(B.column2))

Outras dicas

Você pode participar da tabela a ela mesma em que o relacionamento como tal:

SELECT * FROM tablename t1 JOIN tablename t2 
ON SOUNDEX(t1.column1) = SOUNDEX(t2.column2);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top