powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Камрады хелп! Объединение двух или нескольких колонок в одной таблице
7 сообщений из 7, страница 1 из 1
Камрады хелп! Объединение двух или нескольких колонок в одной таблице
    #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
Камрады хелп! Объединение двух или нескольких колонок в одной таблице
    #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
Камрады хелп! Объединение двух или нескольких колонок в одной таблице
    #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
Камрады хелп! Объединение двух или нескольких колонок в одной таблице
    #39996802
Stanislav_SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zizi_top, спасибо!
...
Рейтинг: 0 / 0
Камрады хелп! Объединение двух или нескольких колонок в одной таблице
    #39996804
Stanislav_SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
paver, спасибо, топ ответ!
...
Рейтинг: 0 / 0
Камрады хелп! Объединение двух или нескольких колонок в одной таблице
    #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
Камрады хелп! Объединение двух или нескольких колонок в одной таблице
    #39996998
paver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina

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

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


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