Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Tiedon haku ja yhteenlasku useasta tietueesta

Hantta [28.04.2005 00:00:27]

#

Nyt tarvitaan konkareiden apua, sillä pää alkaa olla riittävän sekaisin kaikista opaskirjoista. Itselle kun on hieman hepreaa nämä erilaiset JOIN-metodit. BTW. käytössä on mysql:n versio 4.0.26, joten ilmeisesti IF lauseet eivät toimi.

http://dev.mysql.com/tech-resources/articles/wizard/print_version.html tämä linkki olisi juuri se mitä nyt haetaan, mutta osaaminen puuttuu.

Alla olevaan tauluun tallennetaan maaleja, joissa on aina maalintekijä, mutta 1. ja 2. syöttäjä voivat olla NULL-arvoja.

Tässä olisi taulu

GoalID            int(10) unsigned                      PRI     (NULL)   auto_increment
GoalPlayerID      int(10) unsigned                      MUL     0
GoalMatchID       int(10) unsigned                      MUL     0
GoalSeasonID      int(10) unsigned                      MUL     0
GoalMinute        tinyint(3)                                    0
GoalSecond        tinyint(2) unsigned zerofill                  00
GoalPenalty       tinyint(1) unsigned                           0
GoalAssistant1ID  int(10) unsigned              YES     MUL     (NULL)
GoalAssistant2ID  int(10) unsigned              YES     MUL     (NULL)
GoalType          varchar(255)                  YES             (NULL)

Tämän perusteella pitäisi saada muodostettua pistepörssi koko joukkueen osalta. Pelaajien tiedot haetaan toisesta taulusta, joka on ohessa.

Field              Type                 Null    Key     Default  Extra
-----------------  -------------------  ------  ------  -------  --------------
PlayerID           int(10) unsigned             PRI     (NULL)   auto_increment
PlayerFirstName    varchar(255)
PlayerLastName     varchar(255)
PlayerSeasonID     int(11) unsigned                     0
PlayerPositionID   tinyint(1) unsigned                  0
PlayerNumber       tinyint(3) unsigned                  0

Kaikki on PHP:n osalta valmiina, mutta en saa hakua toimimaan...

Tämä on paras mihin olen pystynyt, mutta robleemaksi tulee, että haku huomioi ja laskee vain yhden tietueen tiedot.

SELECT P.PlayerID AS id,
	CASE WHEN G1.GoalPlayerID THEN COUNT( G1.GoalPlayerID )
    WHEN G2.GoalAssistant1ID THEN COUNT( G2.GoalAssistant1ID )
    WHEN G3.GoalAssistant2ID THEN COUNT( G3.GoalAssistant2ID )
    ELSE 0 END AS points
	FROM tplss_players P
	LEFT OUTER JOIN tplss_goals G1 ON G1.GoalPlayerID = P.PlayerID AND
	LEFT OUTER JOIN tplss_goals G2 ON G2.GoalAssistant1ID = P.PlayerID
	LEFT OUTER JOIN tplss_goals G3 ON G3.GoalAssistant2ID = P.PlayerID
	WHERE P.PlayerID IS NOT NULL AND P.PlayerPositionID != '5'
	GROUP BY id
	ORDER BY id

Kiitos jo etukäteen kaikille osallistuneille.

Vastaus

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

Tietoa sivustosta