СЧИТАЙТЕ несколько значений столбца в одной строке - PullRequest
1 голос
/ 29 апреля 2020

В настоящее время я пытаюсь сосчитать несколько значений столбца в MySQL. Моя таблица выглядит следующим образом:

+------------+--------------+--------------+
|    date    | menu_person1 | menu_person2 |
+------------+--------------+--------------+
| 2020-04-29 | Menu 1       | Menu 1       |
+------------+--------------+--------------+
...

Теперь я хотел бы определить количество «Меню 1» для конкретной даты c. Таким образом, в этом случае результат кода должен быть «2» для выбранной даты.

До сих пор я использовал следующий код:

SELECT COUNT(*) AS menu_1_count FROM my_table WHERE date = "2020-04-29" AND (menu_person1 = "Menu 1" OR menu_person2 = "Menu 1");

Однако это будет отображать только 1, поскольку оба значения находятся в одной строке. Есть ли способ подсчитать каждый столбец?

Ответы [ 2 ]

2 голосов
/ 29 апреля 2020

Пожалуй, самый эффективный метод:

SELECT SUM(menu_person1 = 'Menu 1') + SUM(menu_person2 = 'Menu 1') AS menu_1_count
FROM my_table
WHERE date = '2020-04-29' ;

Тем не менее, ваша настоящая проблема - это модель данных. Это подозрительно, если в нескольких столбцах хранятся одни и те же данные. Вы действительно должны иметь таблицу с одной строкой на дату и «человеком меню» - что бы это ни значило.

1 голос
/ 29 апреля 2020
SELECT SUM(IF(menu_person1 = 'Menu 1', 1, 0) + IF(menu_person2 = 'Menu 1', 1, 0))
AS menu_1_count
FROM my_table
WHERE date = '2020-04-29';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...