Tietokannassa on kaksi taulua, users ja testi.
Users taulussa on mm. käyttäjänimet.
Jokaiselle käyttäjänimelle on oma taulu, jossa yhtenä sarakkeena on viikonnumero.
Eli users-taulu:
käyttäjänimi salasana paikkakunta
koe xxx Lappeenranta
testi xyz Helsinki
yritys yzy Tampere
testi-taulu:
viikonnumero maa tii kes tor per
41 xx xy hj iu mm
42 ki kh yf ty hj
43 gf er iö kj vc
Kysymys: Millä kyselyllä saisin vastaukseksi
testi 41 42 43
eli users-taulusta etsitään käyttäjänimi, ja samannimisestä taulusta etsittäisiin kaikki viikonnumerot?
MySQL haku kahdesta taulusta
5
960
Vastaukset
- jaamän
Jokaiselle käyttäjälle oma taulu?
Mikset nyt vaan tekis 2 taulua, vaikkapa tuo users ja testi?
Users:
id, nimi, salasana, paikkakunta
Testi:
id, userid, viikko, ma, ti, ke, to, pe
-tuo userid sit foreign keynä osoittamaan users tauluun.
Haku vaikka jotenkin näin
SELECT viikko
FROM testi
WHERE userid=1
taikka:
SELECT viikko
FROM testi INNER JOIN users ON testi.userid=users.id
WHERE nimi='jojoomies'
huom: en ole mysql käyttäjä niin syntaksi voi hieman heitellä. Idis pitäs olla selvä kuitenkin. - -....................
En puutu kantasuunnitteluusi, mutta itse tekisin toisin.
User-taulu
id | käyttäjänimi | salasana | paikkakunta
1 | käyttäjä1 | salasana1| testikaupunki
Testi-taulu
id | uid | viikonnumero | päivä | tietoa
1 | 1 | 41 | 1 | kävin syömässä
testi taulussa, id jokaiselle tiedolle yksinöllinen, uid = käyttäjän id (user-taulussa) paiva = (ma = 1, ti = 2 jne....) tietoa sarakkeeseen tallennat jotain tekstiä
------------------------------------
Millä ehdolla haet user taulusta, jos käyttäjänimellä, niin eikö voi tehdä yhtä kyselyä suoraan testitauluun?- Pee
Users-taulussa on id-sarake valmiina ja saan helposti muutettua sen muihinkin tauluihin.
Miten haku menisi siinä tapauksessa?
Kokeilin myös yhtä taulua jossa olisi sekä yritys, viikko ja päiväsarakkeet.
Rivit menevät siellä:
Yritys | vko | maa | tii | jne...
testi | 42 | xx | yy | zz
testi | 43 | tr | uu | ll
Millä haulla tuosta saisi vastauksen testi 42 43? - -....................
Pee kirjoitti:
Users-taulussa on id-sarake valmiina ja saan helposti muutettua sen muihinkin tauluihin.
Miten haku menisi siinä tapauksessa?
Kokeilin myös yhtä taulua jossa olisi sekä yritys, viikko ja päiväsarakkeet.
Rivit menevät siellä:
Yritys | vko | maa | tii | jne...
testi | 42 | xx | yy | zz
testi | 43 | tr | uu | ll
Millä haulla tuosta saisi vastauksen testi 42 43?Tosta minun esimerkistäni halutun tiedon saisi näin
SELECT * FROM user JOIN testi USING(uid) WHERE kayttajanimi = 'jaana'
Tämä näyttää kaikki tiedot mitkä on lisätty jaanan nimellä.
USING määrää mikä sarake on yhdistävä tekiä kanhden taulu välillä, tässätapauksessa uid (userid)
JOIN liittää toisentaulun
Muut varmaan tiedätkin?
Aikasemmassa oli pien virhe, user-taulun id pitää olla uid nimeltään, jotta toi toimii.
User-taulun uid ja testi-taulun id kannattaa pistää auto_increment jolloin arvo kasvaa automaattisesti aina yhdellä, sekä kannattaa määritellä sarakkeet uniikeis, tällöin kaksi ihmistä ei voi saada samaa uid tunnusta.
*Kokeilin myös yhtä taulua jossa olisi sekä yritys, viikko ja päiväsarakkeet.*
Ihan hyvä, mutta entäs jos samanapäivänä joku tekee kaksi asiaa tai entäs jos joku tekee viikossa vain yhden asian? tällöin tulee ongelmia sekä kannassa on turhaan tyhjiä tietoja.
En tiedä mihkä käyttötarkoitukseen toi tulee, yks keino on jättää pois minun esimerkistä viikonnumero | päivä sarakkeet ja korvata ne datetimellä(tai timestampilla) niistäkin pystyy hakemaan päivän ja viikon perusteella. - -.............
Pee kirjoitti:
Users-taulussa on id-sarake valmiina ja saan helposti muutettua sen muihinkin tauluihin.
Miten haku menisi siinä tapauksessa?
Kokeilin myös yhtä taulua jossa olisi sekä yritys, viikko ja päiväsarakkeet.
Rivit menevät siellä:
Yritys | vko | maa | tii | jne...
testi | 42 | xx | yy | zz
testi | 43 | tr | uu | ll
Millä haulla tuosta saisi vastauksen testi 42 43?Tässä on sulle nopeesti tehty esimerkki muutamalla kyselyl, laita data kantaasi niin voit testata. Älähämmästy, tota pitkää merkkijonoa, se on vain päivämäärä binääri muodossa (myslin tapa tallettaa päivä)
CREATE TABLE `user` (
`uid` int(11) NOT NULL auto_increment,
`kayttaja` varchar(100) NOT NULL default '',
UNIQUE KEY `uid` (`uid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO `user` VALUES (1, 'jaana');
INSERT INTO `user` VALUES (2, 'jenna');
CREATE TABLE `tiedot` (
`id` int(11) NOT NULL auto_increment,
`uid` int(11) NOT NULL default '0',
`paiva` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
`tieto` text NOT NULL,
UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
INSERT INTO `tiedot` VALUES (1, 1, 0x323030342d31302d31372032333a33383a3136, 'Jaanan eka tieto');
INSERT INTO `tiedot` VALUES (2, 2, 0x323030342d31302d31372032333a33383a3434, 'Jennan eka tieto');
INSERT INTO `tiedot` VALUES (3, 2, 0x323030342d31302d31372032333a33393a3436, 'Jennan toka tieto');
INSERT INTO `tiedot` VALUES (4, 2, 0x323030342d31302d31382032333a34303a3031, 'Jennan kolmas tieto');
INSERT INTO `tiedot` VALUES (5, 1, 0x323030342d31302d31372032333a34343a3139, 'Jaanan toka tieto');
Käyttäjä jennan tiedot
SELECT * , DATE_FORMAT( paiva, 'viikko %v' ) AS viikko
FROM user
JOIN tiedot
USING ( uid )
WHERE kayttaja = 'jenna'
uidkayttajaiduidpaivatietoviikko
2jenna222004-10-17 23:38:44Jennan eka tietoviikko 42
2jenna322004-10-17 23:39:46Jennan toka tietoviikko 42
2jenna422004-10-18 23:40:01Jennan kolmas tietoviikko 43
Kaikki tälläviikolla olevat tiedot (HUOM: kun tein viikko oli 42)
SELECT * , DATE_FORMAT( paiva, 'viikko %v' ) AS viikko
FROM user
JOIN tiedot
USING ( uid )
WHERE YEARWEEK( paiva, 1 ) = YEARWEEK( NOW( ) , 1 )
1jaana112004-10-17 23:38:16Jaanan eka tietoviikko 42
2jenna222004-10-17 23:38:44Jennan eka tietoviikko 42
2jenna322004-10-17 23:39:46Jennan toka tietoviikko 42
1jaana512004-10-17 23:44:19Jaanan toka tietoviikko 42
Tän vuoden viikko 43 tiedot
SELECT * , DATE_FORMAT( paiva, 'viikko %v' ) AS viikko
FROM user
JOIN tiedot
USING ( uid )
WHERE YEARWEEK( paiva, 1 ) = '200443'
2jenna422004-10-18 23:40:01Jennan kolmas tietoviikko 43
Kaikki maanantaina olevat tiedot (1= sunnuntai jne.....)
SELECT * , DATE_FORMAT( paiva, 'viikko %v' ) AS viikko
FROM user
JOIN tiedot
USING ( uid )
WHERE DAYOFWEEK( paiva ) = 2
2jenna422004-10-18 23:40:01Jennan kolmas tietoviikko 43
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Putin hoiti Suomen natoon ja myös Ruotsin
Iso kiitos Vladimir Putinille. Hänen ansiosta pääsemme nyt Natoon. Putin halusi Naton lähelle ja nyt sai. Voimme tästä kiittää vain Putinia.6417831Niinistö teki hetkessä Suomesta Venäjän ydinaseiden maalitaulun
Kaiken lisäksi mies vielä lällätteli Putinille eilisessä tiedotustilaisuudessa ja käski katsomaan itseään peiliin. Kyllä vähän asiallisempaa käytöstä4312109Voi Stefu ja sun kiivas luonteesi
Sielä lentelee ullakkohuoneiston ikkunasta daamin vaatteet ja matkalaukut pitkin pihaa. Toisaalta,en ihmettele yhtään että tämä suhde päättyi näin,kyl2201998- 1431596
Veikkaus: Miten The Rasmus pärjää Euroviisuissa?
Euroviisuhuuma on ylimmillään, kun Suomi ja The Rasmus taistelee biisillään Jezebel. Bändi on tikissä, kunhan Lauri Ylösen ääni kantaa. Mitä veikka511219Ohhoh! Martina Aitolehti ja seurapiirihurmuri-Jesper ekassa yhteiskuvassa - Sutinaa Mallorcalla!
Martina Aitolehti ja seurapiirijulkkis-Jesper nauttivat toisistaan varsin vauhdikkaissa merkeissä Mallorcalla. Aitolehti ei ole esitellyt rakastaan vi251158Stefanilta tuli taas karu totuus Sofiasta
Marokkolainen h*o*ra! Voi tsiisus kun mulla on hauskaa! Lumput lentää ikkunasta kun Stefu raivoaa h*uralleen🤣🤣🤣 Nyt ne popparit tulille, tästä tule951024Ootko onnellinen kun ei tarvitse
nähdä tätä tyhmää naamaa enää koskaan? Multa se särkee sydämen, mutta minkäs teen. Vaikka olisi kuinka sinnikäs eikä hellittäisi, se ei aina auta.65823Oletko nähnyt eroottiset kohuleffat? Fifty Shades Of Grey -trilogia tv:stä
Fifty Shades -trilogia starttaa, kun nuori opiskelijanainen Anastasia tapaa rikkaan liikemiehen. Seksisuhdehan siitä starttaa, höystettynä sadistisill6697Sofia matkii Martinaa
Sofia etsii omaa lippisjonnea mäkkäreistä ja itiksestä. Tuskin löytää yhtä komeaa.133670