X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Помогите с запросом
Kunapuc
Kunapuc
Topic Starter сообщение 15.11.2010, 23:39; Ответить: Kunapuc
Сообщение #1


Выборка уникальных значений с БД
вот код таблицы
CREATE TABLE IF NOT EXISTS `result` (
  `id` int(5) NOT NULL AUTO_INCREMENT,
  `homekey` int(5) NOT NULL,
  `awaykey` int(5) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `fk_result_homekey` (`homekey`),
  KEY `fk_result_awaykey` (`awaykey`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=230;


записи для
homekey     --   awaykey
0            --      0
0            --      0
2            --      9
1            --      0
9            --      2
3            --      1
0            --      1
1            --      3

выполняю запрос на выборку уникальных значений

SELECT homescore, awayscore, COUNT( * )
FROM result
GROUP BY homescore, awayscore

результат будет таким , выборка происходит

       homescore           awayscore           COUNT( * )
1)         0                           0                   2
2)         2                           9                   1
3)         1                           0                   1
4)         9                           2                   1
5)         3                           1                   1
6)         0                           1                   1
7)         1                           3                   1


а вопрос заключается вот в чем . можно ли сделать выборку так
чтобы записи в коде который выще 2 и 4, 3 и 6 ,5 и 7 , считались как одинаковые
и результат был таким ???
     homescore       awayscore            COUNT( * )
1)         0                    0                 2
2)         2                    9                 2
3)         1                    0                 2
4)         3                    1                 2
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Mulder_hb
Mulder_hb
сообщение 16.11.2010, 11:23; Ответить: Mulder_hb
Сообщение #2


Зависит от того, как используется эта таблица. Если данные должны быть действительно уникальными, то уникальность нужно контролировать при внесении данных, а не при их выборке.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Kunapuc
Kunapuc
Topic Starter сообщение 16.11.2010, 13:29; Ответить: Kunapuc
Сообщение #3


(Mulder_hb @ 16.11.2010, 13:23) *
Зависит от того, как используется эта таблица. Если данные должны быть действительно уникальными, то уникальность нужно контролировать при внесении данных, а не при их выборке.


таблица result - это таблица результатов матчей футбольных, для ведения футбольной статистики
homescore - это забитые голы домашней командой
awayscore - забитые голы гостевой командой

пример
№1) 2- 1 ( домашняя команда забила два гола , гостевая 1 гол)
№2) 1-2 (домашняя команда забила один гол, гостевая 2 гола)

то есть запрос на выборку уникальных значений выведет 2- 1 - 1 (count)
1-2 - 1(count) .. нужно чтобы 2-1 и 1-2 считало как 2(count).

Уникальность контролировать при внесении не могу ...
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Mulder_hb
Mulder_hb
сообщение 16.11.2010, 14:23; Ответить: Mulder_hb
Сообщение #4


(Kunapuc @ 16.11.2010, 15:29) *
пример
№1) 2- 1 ( домашняя команда забила два гола , гостевая 1 гол)
№2) 1-2 (домашняя команда забила один гол, гостевая 2 гола)

Т.е. это все один и тот же матч? Тогда сама таблица построена не верно. У вас дублируются записи. Должно быть три таблицы. В первой таблице должна быть одна запись на один матч, а не две, как сейчас. Вторая таблица - список команд. Третья таблица связывает строку из первой с соответствующей строкой из второй. В этой же третьей таблице вы указываете, какая команда домашняя, а какая гостевая.
CREATE TABLE IF NOT EXISTS `result_team` (
  `id` int(5) NOT NULL AUTO_INCREMENT,
  `id_score` int(5) NOT NULL,
  `home_team` int(5) NOT NULL,
  `away_team` int(5) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY (`id_score`),
  FOREIGN KEY(`id_score`) REFERENCES `result` (`id`),
  FOREIGN KEY(`home_team`) REFERENCES `team` (`id`),
  FOREIGN KEY(`away_team`) REFERENCES `team` (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251;

Условия ссылок продумайте сами.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Kunapuc
Kunapuc
Topic Starter сообщение 16.11.2010, 15:28; Ответить: Kunapuc
Сообщение #5


нет это два разных матча ..

вся структура таблицы result такая

CREATE TABLE IF NOT EXISTS `result` (
  `id` int(5) NOT NULL AUTO_INCREMENT,
  `homekey` int(5) NOT NULL,
  `awaykey` int(5) NOT NULL,
  `gamedate` date NOT NULL,
  `homescore` smallint(6) NOT NULL,
  `awayscore` smallint(6) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `fk_result_homekey` (`homekey`),
  KEY `fk_result_awaykey` (`awaykey`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=230;


где homekey - домашняя команда , порядковый номер которой берется с таблицы team
awaykey - гостевая команда , порядковый номер которой берется с таблицы team
структура таблицы team
CREATE TABLE IF NOT EXISTS `team` (
  `id` int(5) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) CHARACTER SET utf8 NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=18;

--------------------------------------------------------------------------------------
INSERT INTO `team` (`id`, `name`) VALUES
(1, 'Милан'),
(2, 'Реал'),
(3, 'Барселона'),
(4, 'Динамо'),


пример полностью
homekey - awaykey - homescore - awayscore
1          2            2                1
3          4            1                2


где homekey 1 и 3 это номер команды , будет Милан и Барселона
где awaykey 2 и 4 э то Реал - Динамо.

тоесть выходит что Милан - Реал, сыграли с счетом 2-1
а Барселона-Динамо с счетом 1-2
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Mulder_hb
Mulder_hb
сообщение 16.11.2010, 18:05; Ответить: Mulder_hb
Сообщение #6


Ну сама идея делать счет уникальным для разных матчей не верна. Это разные матчи и разные счета. Расскажите, для чего вам нужны уникальность счетов, и, возможно, данную проблему удастся решить куда проще. Вам надо посчитать сколько игр в туре закончилось, к примеру со счетом 2:1?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Kunapuc
Kunapuc
Topic Starter сообщение 16.11.2010, 22:04; Ответить: Kunapuc
Сообщение #7


(Mulder_hb @ 16.11.2010, 20:05) *
Ну сама идея делать счет уникальным для разных матчей не верна. Это разные матчи и разные счета. Расскажите, для чего вам нужны уникальность счетов, и, возможно, данную проблему удастся решить куда проще. Вам надо посчитать сколько игр в туре закончилось, к примеру со счетом 2:1?


не в туре .. подсчитать все игры которые закончились со счетом 2:1(1:2), 1:0(0:1) и т.д....
это для статистики .. которая называться "Исходы".. чтобы было видно количество результатов матче и % от всех игр ..
вот пример может готовый, вывод на страничку
spa. Статистика исходов матчей
Счет Раз % от всех
1:0 14 35 % - тут 1:0 и 0:1 вместе
0:0 5 12,5 %
3:0 5 12,5 % - тут 3:0 и 0:3 вместе
2:0 4 10 % - тут 2:0 и 0:2 вместе
2:1 3 7,5 % - тут 2:1 и 1:2 вместе
1:1 2 5 %
2:2 2 5 %
5:1 1 2,5 %
7:0 1 2,5 %
3:1 1 2,5 %
5:0 1 2,5 %
4:0 1 2,5 %
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Mulder_hb
Mulder_hb
сообщение 16.11.2010, 23:04; Ответить: Mulder_hb
Сообщение #8


То, как сделано таблица сейчас, это не реализовать через запрос. Реализуйте через яп.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Kunapuc
Kunapuc
Topic Starter сообщение 16.11.2010, 23:20; Ответить: Kunapuc
Сообщение #9


(Mulder_hb @ 17.11.2010, 01:04) *
То, как сделано таблица сейчас, это не реализовать через запрос. Реализуйте через яп.


а какую структуру таблицы вы видите, для реализации через запрос ?и что такое ЯП? )
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Mulder_hb
Mulder_hb
сообщение 17.11.2010, 0:55; Ответить: Mulder_hb
Сообщение #10


(Kunapuc @ 17.11.2010, 01:20) *
а какую структуру таблицы вы видите, для реализации через запрос ?

Так сразу и не скажу. Надо все продумывать заранее. Быть может я бы вообще не делал таблицу счетов, а делал через забитые мячи данной команды и не важно, где она играла.

ЯП - язык программирования, php, например.

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Помогите вспомнить рекламного бота Телеграм для обмена рекламой
0 Mixatraider 692 21.2.2024, 23:42
автор: Mixatraider
Открытая тема (нет новых ответов) Помогите рещить проблему с монитором.
Почему низкое разрешение при подключении монитора через displayport?
0 Levels 1695 11.12.2020, 0:48
автор: Levels
Открытая тема (нет новых ответов) Помогите кто нибудь получить партнерку Росбанк!
7 heisenberg_mw 2315 7.8.2020, 9:28
автор: heisenberg_mw
Открытая тема (нет новых ответов) Помогите найти тему пожалуйста
7 virtas 12399 24.7.2020, 17:02
автор: -JamesSmips-
Открытая тема (нет новых ответов) Помогите с поиском доноров
3 tehno_music 3331 4.11.2019, 17:15
автор: goblin78


 



RSS Текстовая версия Сейчас: 28.3.2024, 17:53
Дизайн