Projektini olisi muuten valmis mutta yhtä kyselyä vielä huutaa, jota oon tässä sen verran pähkinyt, että vaimokin jo käy kierroksilla. Eli omaan käyttöön tulevasta vedonlyöntiapuohjelmasta on kyse, joka on ollut aika pitkässä liemessä, mutta nyt on taas ollut aikaa jatkokehittää (offtopic). aikasempi, jossa kyselin apua, jonka eri variaatioilla (if, count ja sum oon yrittänyt ko. ongelmaa ratkaista siinä onnistumatta.
Eli nyt pitäisi hakea joukkueen vaikka team2, kuusi viimeistä peliä(koti ja vieras), josta pitäisi saada eroteltua jotenkin kuinka monta peliä he ovat vieraissa pelaneet viimeisessä kuudessa ottelussa ja kuinka ne ovat päättyneet (h,d,a)
h=kotivoitto
d=tasapeli
a=vierasvoitto
Tietokanta:
____________________________________________
hometeam | awayteam | score1 | score2 | ftr
____________________________________________
team1 | team2 | 3 | 0 | H
team2 | team1 | 1 | 1 | D
team5 | team2 | 1 | 2 | A
T:mikko
Eli taulussa ei ole päivämäärää (tai edes juoksevaa id:tä), jota käyttää rajaamaan kuusi viimeisintä ottelua?
Merri kirjoitti:
Eli taulussa ei ole päivämäärää (tai edes juoksevaa id:tä), jota käyttää rajaamaan kuusi viimeisintä ottelua?
pahoittelut jäi laittamatta, on toki id ja päivämäärä kentät , id kenttää oon käyttänyt muissa kyselyissä juurikin tuohon rajaukseen.
SELECT (SUM(IF(X = 'N', 1, 0))) AS X FROM pelit WHERE 'X' IN(A,P)
qeijo kirjoitti:
SELECT (SUM(IF(X = 'N', 1, 0))) AS X WHERE 'X' IN(A,P) FROM N
hmmm. voisitko pikkuisen avata tuota kyselyä?
kiitos!
Mikähän tuosta ei sitten aukea?
The Alchemist kirjoitti:
Mikähän tuosta ei sitten aukea?
lähinnä tuo IN
Ei kyllä minullekaan aukea, mitä tuo qeijon kysely esittää. Siinä on monta yksittäistä kirjainta, joita ei selitetä, ja kysely ei millään ilveellä hae pelkästään kuutta viimeistä peliä. Lisäksi FROM on väärässä kohdassa.
Alkuperäiseen kysymykseen vastaus näyttää tältä:
SELECT COUNT(*) AS peleja, -- max. 6, mutta voihan olla vähemmän SUM((hometeam = 'team2' AND ftr = 'H') OR (awayteam = 'team2' AND ftr = 'A')) AS voitot, SUM(ftr = 'D') AS tasapelit, SUM(hometeam = 'team2' AND ftr = 'H') AS kotivoitot, SUM(awayteam = 'team2' AND ftr = 'A') AS vierasvoitot, SUM(hometeam = 'team2' AND ftr = 'D') AS kotitasapelit, SUM(awayteam = 'team2' AND ftr = 'D') AS vierastasapelit FROM ( SELECT * FROM ottelut WHERE 'team2' IN (hometeam, awayteam) ORDER BY paivamaara DESC, id DESC LIMIT 6 ) AS joukkueen_kuusi_viimeista_ottelua
Hups. FROM korjattu alkuperäiseen.
Metabolix kirjoitti:
Ei kyllä minullekaan aukea, mitä tuo qeijon kysely esittää.
Eikö muka yhtään auennut..
Ei tietenkään vastaukseni suoraan toimi. Vaan herättää ehkä hieman kokeilunhalua.
Esimerkkini enemmän avattuna:
SELECT (SUM(IF(X = 'N', 1, 0))) AS X FROM pelit WHERE 'X' IN(A,P) SELECT (SUM(IF(hometeam = 'team2' AND ftr = 'H', 1, 0))) AS kotivoitot FROM pelit WHERE 'team2' IN(hometeam, awayteam)
Toki Metabolixi esitti jo valmiin ratkaisun.
Kiitos Metabolix, tuo tekee juuri sen mitä tarkoitin, joten saan projektini päätökseen tänään. geijolle myös kiitos avusta!
Aihe on jo aika vanha, joten et voi enää vastata siihen.