У меня есть структура данных в таблице из этих колонокSQL Select Количество категорий accross несколько столбцов
ID | Title | Category_level_1 | Category_level_2 | Category_level_3
1 | offer 1 | Browns | Greens | White
2 | offer 1 | Browns | White |
3 | offer 2 | Greens | Yellow |
4 | offer 3 | Browns | Greens |
5 | offer 4 | Browns | Yellow | White
Не имея возможности изменить структуру таблицы мне нужно «посчитать количество для объявления в категории по всему 3 столбца "
Есть также столбцы для диапазона дат предложения, чтобы ограничить текущие, но я хочу сначала выполнить запрос.
Мне нужно получить список всех категорий, а затем поставить против них предложения.
Предложение может быть в таблице более одного раза.
Насколько я понял, это временная таблица с UNION.
CREATE TEMPORARY TABLE IF NOT EXISTS Cats AS
(SELECT DISTINCT(opt) FROM (
SELECT Category_level_1 AS opt FROM a_table
UNION
SELECT Category_level_2 AS opt FROM a_table
UNION
SELECT Category_level_3 AS opt FROM a_table
) AS Temp
) ;
SELECT
Cats.opt AS "Joint Cat",
(
SELECT count(*)
FROM a_table
WHERE a_table.`Category_level_1` = Cats.opt
OR a_table.`Category_level_2` = Cats.opt
OR a_table.`Category_level_3` = Cats.opt
GROUP BY a_table.Title
) As Total
FROM Cats
WHERE Category_level_1 != ''
ORDER BY Category_level_1 ASC;
ВОПРОС: а), так что объединение работает хорошо, и я получаю мои ценности. DONE b) Подзаголовок Total, хотя и не группируется правильно. Мне просто нужно подсчитать количество всех возвращенных строк, но оно группируется с подсчетом заголовков строк не всех строк.
Так, пытаясь понять, как понять это должно работать и SQL может быть совершенно иной с ответом:
Joint Category | Total Count of offers
Browns | 3
White | 3
Greens | 2
Yellow | 2
Я смущен.Почему коричневые и белые имеют счет 3, но зелень имеет счет 2? –
Как предложение может иметь несколько раундов, но подсчитывается один раз для всех – tristanbailey