Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: SQL-kyselyyn apua

Dramo [30.05.2007 21:17:54]

#

Minulla on taulut user_sessions jossa on tunnus, ip, aikaleima, ja id, ja users jossa on käyttäjätunnus ja käyttäjän tiedot. Miten saisin ton id:n perusteella käyttäjätunnuksen + tiedot users taulusta? Eli user_sessionsin id:n perusteella -> usersessionsin tunnus -> users tiedot.

Tällä hetkellä käytän kahta kyselyä, ekalla saan tunnuksen ja tokalla tiedot sen perusteella. Olisiko mahdollista saada tietoja yhdellä kyselyllä?

Toivon että selitin tarpeeksi hyvin. Niin, user_sessions id on sessiokohtainen.

Antti Laaksonen [30.05.2007 21:34:55]

#

Kyselyyn voi liittää useampia tauluja seuraavasti:

SELECT users.id, users.name, users.email FROM user_sessions, users WHERE users_sessions.sessionid = 12345 AND users_sessions.userid = users.id

Eli WHERE-osioon täytyy lisätä ehto, joka yhdistää taulut toisiinsa.

Grez [30.05.2007 22:26:13]

#

Voi käyttää myös JOINia. Joidenkin mielestä JOIN on selkeämpi tapa. Useimmat tietokantamoottorit optimoivat kyselyn samaan muotoon riippumatta kummalla tavalla asia on tehty, joten useinkaan sillä ei ole käytännön merkitystä.

SELECT users.id, users.name, users.email FROM user_sessions JOIN users ON users_sessions.userid = users.id WHERE users_sessions.sessionid = 12345

Itse tosin suosin vielä taulujen nimeämistä lyhyemmiksi ja kyselyn ryhmittelemistä luettavammaksi:

SELECT
    U.id,
    U.name,
    U.email
FROM
    user_sessions S JOIN
    users U ON (S.userid = U.id)
WHERE
    S.sessionid = 12345

Cornix [30.05.2007 22:51:44]

#

Minusta nuo lyhentelyt näyttää kyllä aika kauheilta. Paljon selkeämpää käyttää kokonaisia englanninkielisiä sanoja, niin jonkun muun ylläpitäjän silmiinkin näyttää kivemmalta ja selkeämmältä. :)

Vastaus

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

Tietoa sivustosta