Проблема выбора запроса MySQL

#php #mysql #sql

#php #mysql #sql

Вопрос:

Я использую этот текущий запрос MySQL в своем PHP-скрипте:

 SELECT WEEK(date),COUNT(*) 
FROM table 
WHERE team='1' AND YEAR(date) = YEAR(NOW()) 
GROUP BY WEEK(date) 
ORDER BY MONTH(date) ASC
  

Это создает массив json, подобный этому: [["36","154"],["37","247"],["38","266"]] где 36, 37, 38 — номер недели, а 154, 247, 266 — количество строк в таблице.

Но что, если я хочу также включить команду 2, поэтому команды 1 и 2?

Я попытался изменить, как показано ниже, но я не получаю никакого значения:

 SELECT WEEK(date),COUNT(*) 
FROM table 
WHERE team='1' AND team='2' AND YEAR(date) = YEAR(NOW()) 
GROUP BY WEEK(date) 
ORDER BY MONTH(date) ASC;
  

Что я делаю не так? Может кто-нибудь мне помочь, пожалуйста?

РЕДАКТИРОВАТЬ: вот как это выглядит:

 | ID |         date        | TEAM |
|  1 | 2020-09-22 17:31:32 |   1  |
|  2 | 2020-09-22 15:14:43 |   1  |
|  3 | 2020-09-17 16:23:54 |   2  |
|  4 | 2020-09-17 11:23:11 |   1  |
|  5 | 2020-09-15 15:32:26 |   2  |
  

Ожидаемым результатом должен быть массив вместо этого: [["36","154"],["37","247"],["38","266"]] я также хочу включить команду 2, например: [["36","154","144"],["37","247","233"],["38","266","286"]] где последняя строка — это число или строки для команды 2

Комментарии:

1. команда не может быть 1 и 2 одновременно, она может быть либо 1, либо 2…

2. Какую СУБД вы используете?

3. @jarlh phpMyAdmin

4. Вы, вероятно, имеете в виду MySQL.

5. При ГРУППИРОВАНИИ ПО вы можете упорядочивать только по элементам списка выбора.

Ответ №1:

Вы запрашиваете строки, team значение которых равно '1' И '2' одновременно, что невозможно. Вот почему вы получаете пустой результат.

Комментарии:

1. Итак, как мне нужно это вызвать?

2. Каким вам нравится ваш результат? Я не понял, что вы имели в виду, говоря «включить команду 2 также». Вы хотите просто ИЛИ между ними? Вы хотите их сгруппировать?

3. Я хочу их сгруппировать. Также включить количество строк для команды 2 в массив. Пожалуйста, проверьте мой обновленный вопрос.

Ответ №2:

Я не знаю, как выглядит ваш набор данных, но попробуйте запросить данные, где команда равна 1 ИЛИ 2.

 SELECT WEEK(date),COUNT(*) 
FROM table 
WHERE (team='1' OR team='2') AND YEAR(date) = YEAR(NOW()) 
GROUP BY WEEK(date) 
ORDER BY MONTH(date) ASC;