Question

Je suis tout à fait nouveau à SQL et avez une question sur les noms correspondant de deux colonnes situées dans un tableau:

Disons que je veux utiliser la fonction soundex () pour correspondre à deux columsn. Si j'utilise cette requête:

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

une ligne est renvoyée si les deux noms dans ce match de la ligne. Maintenant, je voudrais aussi obtenir ces noms correspond entre colonne1 et colonne2 qui ne sont pas dans la même rangée. Y at-il un moyen d'automatiser une procédure par laquelle tous les noms de colonne1 est comparé à tous les noms de colonne2?

Merci:)

p.s .: Si quelqu'un pouvait me pointer dans la direction d'un n-gramme / algorithme de correspondance bi-gramme qui est facile pour un noob à mettre en œuvre dans mysql qui serait bon aussi bien.

Était-ce utile?

La solution

Si votre table a une clé, disons id, vous pouvez essayer:

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

Autres conseils

Vous pouvez vous joindre à la table pour se sur cette relation en tant que tel:

SELECT * FROM tablename t1 JOIN tablename t2 
ON SOUNDEX(t1.column1) = SOUNDEX(t2.column2);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top