MySQL haku kahdesta taulusta

Pee

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?

5

960

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • 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

    1. 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.
      Maailman menoa
      641
      7831
    2. Niinistö 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ä
      Maailman menoa
      431
      2109
    3. Voi 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,kyl
      Kotimaiset julkkisjuorut
      220
      1998
    4. Poliisi otti Stefun kiinni!

      Seiska tietää kertoa.
      Kotimaiset julkkisjuorut
      143
      1596
    5. 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ä veikka
      Viihde ja kulttuuri
      51
      1219
    6. Ohhoh! 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 vi
      Kotimaiset julkkisjuorut
      25
      1158
    7. Stefanilta 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ä tule
      Kotimaiset julkkisjuorut
      95
      1024
    8. Ootko 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.
      Ikävä
      65
      823
    9. Oletko 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ä sadistisill
      Suhteet
      6
      697
    10. Sofia matkii Martinaa

      Sofia etsii omaa lippisjonnea mäkkäreistä ja itiksestä. Tuskin löytää yhtä komeaa.
      Kotimaiset julkkisjuorut
      133
      670
    Aihe