#php #mysql
#php #mysql
Вопрос:
у меня есть таблица с именем temp. столбцы — это идентификатор, номер телефона, короткий код, горячая клавиша.
id telco shortcode hotkey
1 asdf 123 ib
2 gra 123 sb
3 cc 123 sb
4 bl 123 ibb
используя запрос mysql, я хочу, чтобы количество выходных данных (короткий код) группировалось по telco, где горячая клавиша ib короткий код 123 и
количество (короткий код) групп по telco, где горячая клавиша sb короткий код 123
telco ib sb
asdf 1 0
gra 0 1
cc 0 1
bl 1 0
если я использую следующий запрос
SELECT COUNT(`shortcode`) WHERE `hotkey` = 'ib' AND `shortcode` = 123
SELECT COUNT(`shortcode`) WHERE `hotkey` = 'sb' AND `shortcode` = 123
тогда я выхожу следующим образом
telco ib
asdf 1
gra 0
cc 0
bl 1
telco sb
asdf 1
gra 0
cc 0
bl 1
но я не хочу этого
Ответ №1:
вы хотите использовать случай суммы, например
Select
Telco,
Sum ( Case when hotkey = 'ib' then 1 else 0 end) as ib,
Sum ( Case when hotkey = 'sb' then 1 else 0 end) as sb
From
Yourtable
Group By
Telco
Обратите внимание, что в текущих версиях Oracle Sql server есть возможность использовать синтаксис pivot
Комментарии:
1. Я написал «Theb», когда должен был написать «тогда». Я исправил это, но ошибка, которую вы получаете, странная. Я не уверен, что может вызвать это. Возможно, вам следует убедиться, что все экранировано, и начать только с одного оператора SUM / Case
2. Рад, что смог помочь. Возможно, вы захотите ознакомиться с этим мета-сообщением. Это объясняет преимущества маркировки принятого ответа. meta.stackexchange.com/questions/5234 /…
Ответ №2:
У вас это уже есть, просто нужно добавить SELECT и не беспокоиться о ГРУППЕ ПО частям.
SELECT COUNT(`shortcode`) WHERE `hotkey` = 'ib' AND `shortcode` = 123
SELECT COUNT(`shortcode`) WHERE `hotkey` = 'sb' AND `shortcode` = 123
Первый покажет вам, сколько строк имеют горячую клавишу как ‘ib’ и короткий код как 123, второй с горячей клавишей как ‘sb’ и коротким кодом как 123.
Комментарии:
1. я это знаю, но как показать вывод моего требуемого формата. я хочу написать запрос mysql, который выдает вывод в указанном выше формате
2. Возможно, вы захотите уточнить это в вопросе. Вместо COUNT (shortcode) вы можете изменить его на выбор telco вместо этого, а затем просто перебирать и отображать для каждого запроса.
3. отображать каждый запрос, затем каждый раз показывать telco, как показано ниже telco ib asdf 1 gra 0 cc 0 bl 1 и telco sb asdf 0, gra 1, cc 1 b1 0, но я хочу показывать имя оператора только одно для каждого запроса.