powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Максимальное и минимальное значение параметра.
3 сообщений из 3, страница 1 из 1
Максимальное и минимальное значение параметра.
    #33326043
Steven13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть таблица:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE TABLE `ut_players` (
  `PlayerID` int( 11 ) NOT NULL auto_increment,
  `Tck` decimal( 5 , 3 ) NOT NULL default '0.000',
  `Mrk` decimal( 5 , 3 ) NOT NULL default '0.000',
  `Drb` decimal( 5 , 3 ) NOT NULL default '0.000',
  `Rcv` decimal( 5 , 3 ) NOT NULL default '0.000',
  `Edu` decimal( 5 , 3 ) NOT NULL default '0.000',
  `Pas` decimal( 5 , 3 ) NOT NULL default '0.000',
  `Shp` decimal( 5 , 3 ) NOT NULL default '0.000',
  `Sha` decimal( 5 , 3 ) NOT NULL default '0.000',
  PRIMARY KEY  (`PlayerID`)) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
Нужно узнать у каждого игрока какое его умение самое большое:
Я пока решил так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
SELECT PlayerID, RIGHT((
SELECT concat(p1.Tck, 1 )as umen FROM ut_players p1 where p1.PlayerId=p.PlayerId
union
SELECT concat(p2.Mrk, 2 )as umen FROM ut_players p2 where p2.PlayerId=p.PlayerId
union
SELECT concat(p3.Drb, 3 )as umen FROM ut_players p3 where p3.PlayerId=p.PlayerId
union
SELECT concat(p4.Rcv, 4 )as umen FROM ut_players p4 where p4.PlayerId=p.PlayerId
union
SELECT concat(p5.Edu, 5 )as umen FROM ut_players p5 where p5.PlayerId=p.PlayerId
union
SELECT concat(p6.Pas, 6 )as umen FROM ut_players p6 where p6.PlayerId=p.PlayerId
union
SELECT concat(p7.Shp, 7 )as umen FROM ut_players p7 where p7.PlayerId=p.PlayerId
union
SELECT concat(p8.Sha, 8 )as umen FROM ut_players p8 where p8.PlayerId=p.PlayerId
order by umen desc limit  1 ), 1 )
FROM ut_players p
Я получаю номер самого большого(или маленького) параметра.


Может есть более рациональные методы?
...
Рейтинг: 0 / 0
Максимальное и минимальное значение параметра.
    #33326096
Steven13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В предідущем варианте сортировка работала неправильно, число розсматривалось как строка. Здесь уде правильно:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
SELECT *,RIGHT((
SELECT p1.Tck+ 0 . 0001  as umen FROM ut_train_vip p1 where p1.PlayerId=p.PlayerId
union
SELECT p2.Mrk+ 0 . 0002  FROM ut_train_vip p2 where p2.PlayerId=p.PlayerId
union
SELECT p3.Drb+ 0 . 0003  FROM ut_train_vip p3 where p3.PlayerId=p.PlayerId
union
SELECT p4.Rcv+ 0 . 0004  FROM ut_train_vip p4 where p4.PlayerId=p.PlayerId
union
SELECT p5.Edu+ 0 . 0005  FROM ut_train_vip p5 where p5.PlayerId=p.PlayerId
union
SELECT p6.Pas+ 0 . 0006  FROM ut_train_vip p6 where p6.PlayerId=p.PlayerId
union
SELECT p7.Shp+ 0 . 0007  FROM ut_train_vip p7 where p7.PlayerId=p.PlayerId
union
SELECT p8.Sha+ 0 . 0008  FROM ut_train_vip p8 where p8.PlayerId=p.PlayerId
order by umen desc limit  1 ), 1 )
FROM ut_train_vip p
...
Рейтинг: 0 / 0
Максимальное и минимальное значение параметра.
    #33453372
Steven13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оказывается есть специальные функции:
Код: plaintext
1.
2.
3.
4.
select right(GREATEST(Tck+ 0 . 0001 ,Mrk+ 0 . 0002 ,Drb+ 0 . 0003 ,Rcv+ 0 . 0004 ,
                            Edu+ 0 . 0005 ,Pas+ 0 . 0006 ,Shp+ 0 . 0007 ,Sha+ 0 . 0008 ), 1 );

select right(LEAST(Tck+ 0 . 0001 ,Mrk+ 0 . 0002 ,Drb+ 0 . 0003 ,Rcv+ 0 . 0004 ,
                            Edu+ 0 . 0005 ,Pas+ 0 . 0006 ,Shp+ 0 . 0007 ,Sha+ 0 . 0008 ), 1 );
Интересно, почему никто не подсказал?

У меня так долго работал тот медленный запрос...

________________
Пути мои - неисповедимы.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Максимальное и минимальное значение параметра.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]