Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: MySQL-kysely samantapaisille teksteille

punppis [13.04.2009 01:41:20]

#

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?

mikkop92 [13.04.2009 07:00:19]

#

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 :)

Markus [13.04.2009 10:57:32]

#

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".

Grez [13.04.2009 11:12:52]

#

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.

mikkop92 [13.04.2009 11:23:26]

#

Ei se sitten ollutkaan vaikeaa. Aina on mukavaa olla väärässä :|

Markus [13.04.2009 17:49:59]

#

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.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta