Problem s MySQL sub-query

4 отговора 298 прегледа
#1

Problem s MySQL sub-query

Здравейте,

Абе отскоро почнах да си правя един сайт за Висшата Английска Лига и за база ползвам MySQL, щото е бе з пари. Имам следната таблица, в която записвам резултатите на отборите и искам от нея да извличам временното класиране. Таблицата е следната:

# Host: localhost
# Database: sport
# Table: 'game'
#
CREATE TABLE `game` (
`MATCH_DATE` date NOT NULL default '0000-00-00',
`MATCH_ID` bigint(20) NOT NULL auto_increment,
`HOME_TEAM_ID` int(11) NOT NULL default '0',
`AWAY_TEAM_ID` int(11) NOT NULL default '0',
`HOME_GOALS` int(11) NOT NULL default '0',
`HOME_POINTS` int(11) NOT NULL default '0',
`AWAY_POINTS` int(11) NOT NULL default '0',
`AWAY_GOALS` int(11) NOT NULL default '0',
PRIMARY KEY (`MATCH_ID`)
) TYPE=MyISAM;

Напълних я с малко тестови данни:

+------------+----------+--------------+--------------+------------+-------------+-------------+------------+
| MATCH_DATE | MATCH_ID | HOME_TEAM_ID | AWAY_TEAM_ID | HOME_GOALS | HOME_POINTS | AWAY_POINTS | AWAY_GOALS |
+------------+----------+--------------+--------------+------------+-------------+-------------+------------+
| 2004-06-24 | 1 | 1 | 2 | 2 | 3 | 0 | 0 |
| 2004-06-24 | 2 | 2 | 1 | 1 | 1 | 1 | 1 |
| 2004-06-24 | 3 | 3 | 1 | 1 | 0 | 3 | 2 |
| 2004-06-24 | 4 | 1 | 3 | 0 | 1 | 1 | 0 |
| 0000-00-00 | 5 | 2 | 3 | 3 | 3 | 0 | 2 |
+------------+----------+--------------+--------------+------------+-------------+-------------+------------+

И реших да извъртя следната заявка за да получа временното класиране:

SELECT id, sum(points)
FROM
(
(SELECT home_team_id AS id, sum(home_points) AS points from game GROUP BY home_team_id)
UNION ALL
(SELECT away_team_id AS id, sum(away_points) AS points from game GROUP BY away_team_id)
)
AS game
GROUP BY id;

ОБАЧЕ ГЪРМИ. Досега съм бачкал с Oracle и там това щеше да мине -- четох и хелпа на MYSQL, но не мога да разбера къде греша. Много ще се радвам ако някой ми помогне. Благодаря. Да не е нещо заради тия вложени селекти...

hAMORPHIS

Отговор
в отговор на hAMORPHlS #2

Re: Problem s MySQL sub-query

ERROR 1064

Отговор
в отговор на hAMORPHlS #3

Re: Problem s MySQL sub-query

Starting with MySQL 4.1, all subquery forms and operations that the SQL standard requires are supported, as well as a few features that are MySQL-specific.

най-вероятно ползваш по-малка версия, тъй като 4.1 е още в алфа стадии и лично аз не бих го ползвал на production сървер ако ще е само за опита - давай

варианта е преработваш си заявките (сега тази не ми се мисли дали може) или ако си избрал mysql само защото е безплатен, пробвай postgresql (тук доста малко неща ще ти липсват) или firebird (тук по-малко знам, но има subqueies) ако още си в начален стадии (и хостинга ти трябва да ги подържа)

Отговор
в отговор на phpGuru #4

Re: Problem s MySQL sub-query

hostinga si e na moya computar u nas realno IP, taka che se chudya dali s nelegalen Oracle da si tsukam :))) saita nyama da e za pechelene na pari taka li edva li nekoy she buchi che sum s nelizenziran ORacle -- to edva li i she razbere de....

Отговор
в отговор на hAMORPHlS #5

Re: Problem s MySQL sub-query

Към списъка с база който ти препоръчаха да добавя и MSDE -лайт версия на MS SQL server-a. Безплатна е, така че лицензни кахъри нямаш, но не се държи добре при по-голямо натоварване (над 5 конекции).. Все пак MS трябва да си продават и MS SQL server и са я скопили леко - но за сайт със connection pooling може да ти удържи до 20-30 usera без особен проблем.

Отговор