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.
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.
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
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ä. :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.