Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: SQL - monisarakkeinen indeksi

coaster [25.10.2005 14:04:08]

#

Elikkä pystyykö SQL:llä jotenkin tekemään automaattisesti tuollaisen monisarakkeisen indeksin?

esimerkki:

Taulu
id  id2  teksti
1   1    jotain
1   2    jotain muuta
1   3    ja
2   1    vielä
2   2    vähän
3   1    näitä
4   1    tähän
4   2    jne.

Kyllähän ton nyt koodissa pystyy toteuttamaan, mutta onko olemassa jotain "virallista" tapaa?

FooBat [25.10.2005 22:08:38]

#

Jos tarkoitat vain datan hakemista tuossa järjestyksessä niin se onnistuu helposti lisäämällä SQL-lauseeseen "ORDER BY id, id2".

SQL:sssä pystyy myös määrittämään kahden tai useamman sarakkeen indeksejä (hakurakenteita).
http://dev.mysql.com/doc/refman/5.0/en/create-index.html

coaster [25.10.2005 22:48:06]

#

ehkä selitin asian vähän heikosti

eli

että id2 olisi ns. automaattinen kenttä, jolloin kun lisään insertissä id1:n niin id2 tulis automaattisesti oikein. Vähän kuin auto_increment, mutta ehdollisesti.

panttu [25.10.2005 23:21:49]

#

Tietääkseni SQL kantoihin on mahdollista tehdä omiafunktioitakin ja miten se asiaaliittyy tulee siitä, että taulua luodessa on mahdollista antaa oletusarvo tai oletusfunktio tiedolle. Yleisimpiä funktioita lienee ajanhaku NOW()-funktiolla, jota näkee tauluissa., mutta samalla idealla myös oman funktioin tekeminen ja sen liittäminen oletus "arvoksi" luulisi onnistuvan.

Sitten laadukkaimissa kannoissahan taisi olla, jonkinlainen tapa luoda tapahtumiin perustuvia kyselyjä eli esim. taulukkoon tiedon lisäyksen jälkeen on mahdollista suorittaa, joku toinen tallennettu kysely, jolla tuon arvon asettaminen voisi myös onnistua tai ehkä en tiedä.

mike patto [26.10.2005 09:00:27]

#

Jos haluat lisätä yhden rivin ID1:n arvolle 1 voisit ehkä tehdä näin :

insert into foo
select 1,max(id2)+1, 'neljäs' from foo where id1=1

Osaat varmaan soveltaa omiin tarpeisiisi sopivaksi

kasetti [28.10.2005 18:38:21]

#

Triggereillä voidaan tehdä tiettyjä tapahtumia kun esim. tietokantaan lisätään tietoa.

Vastaus

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

Tietoa sivustosta