Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: SQL-kyselyyn apuja

Sivun loppuun

mmikko [10.08.2013 00:12:19]

#

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

Merri [10.08.2013 14:22:18]

#

Eli taulussa ei ole päivämäärää (tai edes juoksevaa id:tä), jota käyttää rajaamaan kuusi viimeisintä ottelua?

mmikko [10.08.2013 15:53:49]

#

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.

qeijo [10.08.2013 16:03:36]

#

SELECT (SUM(IF(X = 'N', 1, 0))) AS X FROM pelit WHERE 'X' IN(A,P)

mmikko [10.08.2013 16:42:03]

#

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!

The Alchemist [10.08.2013 17:14:01]

#

Mikähän tuosta ei sitten aukea?

mmikko [10.08.2013 17:26:47]

#

The Alchemist kirjoitti:

Mikähän tuosta ei sitten aukea?

lähinnä tuo IN

Metabolix [10.08.2013 17:42:33]

#

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

qeijo [10.08.2013 18:07:09]

#

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.

mmikko [11.08.2013 11:37:16]

#

Kiitos Metabolix, tuo tekee juuri sen mitä tarkoitin, joten saan projektini päätökseen tänään. geijolle myös kiitos avusta!


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta