2 taulukkoa, pelaajat ja tapahtumat. Pelaajat taulukossa kentät 'nimi' ja 'ryhmä' (jossa tieto hyökkääjä tai puolustaja). Tapahtumat taulukossa kenttä 'nimi' (yms.) Kuinka saada lajiteltua kaikki 'tapahtumat' -taulukon rivit 'pelaaja' -taulukon ryhmän mukaisesti järkevästi? Eli listata kaikki tapahtumat joiden pelaaja-ryhmä on joko hyökkääjä tai puolustaja.
- AnttiK
lainaus:
Eli listata kaikki tapahtumat joiden pelaaja-ryhmä on joko hyökkääjä tai puolustaja.
SELECT t.* FROM tapahtumat t JOIN pelaajat p ON p.nimi=t.nimi WHERE p.ryhmä IN ('hyökkääjä','puolustaja')
En kyllä ymmärrä missä se järjestely tuli kuvioon.
Kannattaa tutustua SELECTin syntaksiin
http://dev.mysql.com/doc/refman/5.0/en/select.
Rajaaminen onnistuu WHERE ehdot
Järjestely onnistuu ORDER BY kentät joiden mukaan järjestetään
En nopealla vilkaisulla saa tolkkua kuinka tehdä rajaus toisessa taulukossa olevan tiedon perusteella. :(
Nojuu järjestely oli hieman väärä kuvaus. Yritin mysql:n sivuilta ymmärtää tota JOIN komentoa, mutta on kohtalaisen ufo kokonaisuudessaan :D
Sain kuitenkin kokeilemalla toimimaan ihan pelkällä select -lauseella kuten ehdottelit :)
select tapahtumat.nimi, pelaajat.nimi from tapahtumat, pelaajat where tapahtumat.nimi = pelaajat.nimi and pelaajat.ryhma = 'puolustaja';
Ainakin lyhyen testailun mukaan lause hakee tiedot oikein. Tiedä sitten onko tähän järkevämpi tapa.
No toihan on ihan tasan sama kysely kuin tuo jonka laitoin, paitsi että
1) JOINin käyttöä suositellaan vaikkakin tietokanta todennäköisesti optimoi tuon sinun (useampi taulu ja yhdistäminen WHEREssä) kyselysi samanlaiseksi JOINia käyttäväksi kyselyksi.
2) sinun kyselysi hakee vain puolustaja ryhmässä olevat, kun taas tuo minun kysely tekee sen mitä pyysitkin, eli hakee kaikki tapahtumat, joiden pelaajan "ryhmä on joko hyökkääjä tai puolustaja"
Aihe on jo aika vanha, joten et voi enää vastata siihen.