Heipä hei! Aloitin nyt järjestelmään musiikkejani jotenkin järkevästi tagien perusteella, ja aloitin siirtämällä kaikki musiikit yhteen MySQL-kantaan. Haluaisin nyt saada selville kaikki artistit ja albumit, joiden nimissä on kirjainkoollisia eroja, esim. "Jean Sibelius", "jean sibelius" ja "Jean SiBeLiUs". Tästä hausta haluaisin karsia kuitenkin pois ne artistit, joita ei esiinny kuin yksi kappale.
Esimerkkilista
/* artistit */ Janne Tulkki Seppo Hovi Bändi Orkesteri Stam1na Stamina stam1na 22-Pistepirkko 22 Pistepirkko Jean Sibelius jean sibelius
noista pitäisi karsia siis mysql queryllä seuraavat:
Stam1na Stamina stam1na 22-Pistepirkko 22 Pistepirkko Jean Sibelius jean sibelius
Mukana on myös pieniä eroja (esim. väliviiva välin tilalla) omaavia artisteja ja haluaisin nuo myös löydettyä. Tämä menee jo hankalaksi, mutta jos edes nuo kirjainkooltaan eroavaiset saisi löydettyä. Saako tähän jonkun valmiin queryn sovellettua vai pitääkö ruveta PHP:n kautta kikkailemaan?
Minusta tuntuu, että kyseinen toiminnallisuus on hyvin vaikeaa tai mahdotonta tehdä SQL:llä. Jos tuntuu siltä, että saat tehtyä PHP:llä helpommin niin kannattaa se silloin tehdä PHP:llä, säästät aikaa ja hermoja :)
Seuraava kysely tekee ainakin melkein mitä haluat:
SELECT DISTINCT a.id, a.nimi
FROM artistit a, artistit b
WHERE a.nimi
SOUNDS LIKE b.nimi
AND a.id != b.id
Kysely olettaa, että taulun nimi on "artistit" ja siinä on sarakkeet "id" (avain) ja "nimi".
No yksi vaihtoehto olisi laittaa taulun collationiksi _bin tai _cs ja sitten tehdä esim. seuraava kysely:
select distinct a.artisti from artistit a, artistit b where b.artisti <> a.artisti and replace(lower(b.artisti),'-',' ')=replace(lower(a.artisti),'-',' ')
Markuksen viestiin kommentoisin, että tuosta Sounds:sta sanotaan:
lainaus:
This function, as currently implemented, is intended to work well with strings that are in the English language only. Strings in other languages may not produce reliable results.
Ei se sitten ollutkaan vaikeaa. Aina on mukavaa olla väärässä :|
Grez kirjoitti:
Markuksen viestiin kommentoisin, että tuosta Sounds:sta sanotaan:
lainaus:
This function, as currently implemented, is intended to work well with strings that are in the English language only. Strings in other languages may not produce reliable results.
Siksi se tekeekin vain "melkein" mitä haluttiin.
Aihe on jo aika vanha, joten et voi enää vastata siihen.