Гость
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Камрады хелп! Объединение двух или нескольких колонок в одной таблице / 7 сообщений из 7, страница 1 из 1
05.09.2020, 16:58
    #39995907
Stanislav_SQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Камрады хелп! Объединение двух или нескольких колонок в одной таблице
Составлен список спортсменов с разрядами по разным видам спорта, если значение поля 0, то этот этим видом он не занимается. Вопрос - как получить список спортсменов, занимающихся более чем одним видом спорта???
CREATE TABLE sports_category(
id INT NOT NuLL AUTO_INCREMENT,
name_athlete VARCHAR (30),
boxing INT,
hockey INT,
football INT,
swimming INT,
tennis INT,
PRIMARY KEY(id)
);
INSERT INTO `sports_category`(`name_athlete`, `boxing`, `hockey`, `football`, `swimming`, `tennis`) VALUES ('Том', '10', '2', '5', '7', '2');
INSERT INTO `sports_category`(`name_athlete`, `boxing`, `hockey`, `football`, `swimming`, `tennis`) VALUES ('Єва', '0', '2', '5', '7', '2');
INSERT INTO `sports_category`(`name_athlete`, `boxing`, `hockey`, `football`, `swimming`, `tennis`) VALUES ('Виталий', '10', '2', '5', '7', '2');
INSERT INTO `sports_category`(`name_athlete`, `boxing`, `hockey`, `football`, `swimming`, `tennis`) VALUES ('Алекс', '10', '2', '5', '7', '2');
INSERT INTO `sports_category`(`name_athlete`, `boxing`, `hockey`, `football`, `swimming`, `tennis`) VALUES ('Марта', '0', '0', '1', '0', '0');
INSERT INTO `sports_category`(`name_athlete`, `boxing`, `hockey`, `football`, `swimming`, `tennis`) VALUES ('Катя', '10', '0', '0', '0', '0');
думал что сработает такая команда
SELECT `name_athlete` FROM `sports_category` WHERE `boxing` <> 0 AND `hockey` <> 0 AND `football` <> 0 AND swimming <> 0 AND tennis <>0;
но нет, какие варианты, подскажите пожалуйста
...
Рейтинг: 0 / 0
05.09.2020, 17:21
    #39995910
zizi_top
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Камрады хелп! Объединение двух или нескольких колонок в одной таблице
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT name_athlete, 
case when boxing>0 then 1 else 0 end as boxing, 
case when hockey>0 then 1 else 0 end as hockey, 
case when football>0 then 1 else 0 end as football, 
case when swimming>0 then 1 else 0 end as swimming, 
case when tennis>0 then 1 else 0 end as tennis 
FROM `sports_category` 
having boxing +hockey +football +swimming +tennis >1 
...
Рейтинг: 0 / 0
06.09.2020, 08:26
    #39995972
paver
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Камрады хелп! Объединение двух или нескольких колонок в одной таблице
Код: sql
1.
2.
3.
SELECT name_athlete
FROM sports_category
HAVING ((boxing>0) + (hockey>0) + (football>0) + (swimming>0) + (tennis>0)) > 1
...
Рейтинг: 0 / 0
09.09.2020, 09:54
    #39996802
Stanislav_SQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Камрады хелп! Объединение двух или нескольких колонок в одной таблице
zizi_top, спасибо!
...
Рейтинг: 0 / 0
09.09.2020, 09:56
    #39996804
Stanislav_SQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Камрады хелп! Объединение двух или нескольких колонок в одной таблице
paver, спасибо, топ ответ!
...
Рейтинг: 0 / 0
09.09.2020, 10:52
    #39996824
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Камрады хелп! Объединение двух или нескольких колонок в одной таблице
paver
Код: sql
1.
2.
3.
SELECT name_athlete
FROM sports_category
HAVING ((boxing>0) + (hockey>0) + (football>0) + (swimming>0) + (tennis>0)) > 1


А почему HAVING-то? в такой форме - WHERE вполне достаточно...

Stanislav_SQL
name_athlete VARCHAR (30)

Поле НЕ заявлено уникальным - т.е. в нём возможны дубликаты (не надо говорить, что, мол, такого не может быть - структура ПОЗВОЛЯЕТ, значит, когда-нибудь оно непременно случится). Тогда запрос усложнится до
Код: sql
1.
2.
3.
4.
SELECT name_athlete
FROM sports_category
GROUP BY name_athlete
HAVING ((SUM(boxing)>0) + (SUM(hockey)>0) + (SUM(football)>0) + (SUM(swimming)>0) + (SUM(tennis>0))) > 1
...
Рейтинг: 0 / 0
09.09.2020, 17:23
    #39996998
paver
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Камрады хелп! Объединение двух или нескольких колонок в одной таблице
Akina

А почему HAVING-то? в такой форме - WHERE вполне достаточно...

Патаму шта чайник. Тупо упростил предыдущий вариант
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Камрады хелп! Объединение двух или нескольких колонок в одной таблице / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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