#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;