FAQ - domande frequenti

Domanda

Come faccio a creare una query che mi confronti il campo keywords del record attualmente visualizzato con il campo keywords degli altri record nella tabella, e mi mostri titolo e link degli articoli in cui una o più keyword sono le stesse?

Esempio pratico: sul sito di Repubblica, quando leggi un articolo puoi vedere sulla destra i link agli articoli correlati. Escludo che siano gestiti a mano, e' sicuramente un automatismo. Vorremmo fare qualcosa di
simile.

Risposta

Si può creare una Vista ad hoc con questo codice:
select a2.* from notizie as a1, notizie as a2 where a2.keywords like concat("%",a1.keywords,"%") and a1.id=@id and a2.id<>@id;
Però così com'è funziona solo se nelle keywords viene messa solo una singola parola. La cosa migliore è creare un campo in più, "argomento", dove venga stipata una singola keyword, e poi trovare tutti gli articoli che nelle keyword contengono anche quell'argomento lì. Avremo:
select a2.* from notizie as a1, notizie as a2 where a2.keywords like concat("%",a1.argomento,"%") and a1.id=@id and a2.id<>@id;