MySQL crosstab query
4 отговора
1181 прегледа
MySQL crosstab query
Здравейте.
Имате ли идея как се прави crosstab заяка в MySQL (4.1)? Имам следната заявка, реализирана в Access:
TRANSFORM Count(feedbacks.msgType) AS CountOfmsgType
SELECT dirs.dirName
FROM dirs INNER JOIN (msgtypes INNER JOIN feedbacks ON msgtypes.Id=feedbacks.msgType) ON dirs.Id=feedbacks.dirID
GROUP BY dirs.Id, dirs.dirName
PIVOT msgtypes.msgType;
Изходната раблица е dirName редове и колони от msgType count-овете за всеки dirName.
Danke предварително.
Имате ли идея как се прави crosstab заяка в MySQL (4.1)? Имам следната заявка, реализирана в Access:
TRANSFORM Count(feedbacks.msgType) AS CountOfmsgType
SELECT dirs.dirName
FROM dirs INNER JOIN (msgtypes INNER JOIN feedbacks ON msgtypes.Id=feedbacks.msgType) ON dirs.Id=feedbacks.dirID
GROUP BY dirs.Id, dirs.dirName
PIVOT msgtypes.msgType;
Изходната раблица е dirName редове и колони от msgType count-овете за всеки dirName.
Danke предварително.
Re: MySQL crosstab query
Оправих се:
SELECT
d.dirName AS dirName,
SUM(IF(f.msgType = 1,1,0)) AS Type0,
SUM(IF(f.msgType = 2,1,0)) AS Type1
...
FROM dirs AS d
LEFT JOIN feedbacks AS f ON d.ID = f.dirID
GROUP BY d.ID
ORDER BY d.dirName
Но ако някой има по-добра идея нека сподели, защото SUM IF е доста статичен подход според мен (макар и да върши работа).
SELECT
d.dirName AS dirName,
SUM(IF(f.msgType = 1,1,0)) AS Type0,
SUM(IF(f.msgType = 2,1,0)) AS Type1
...
FROM dirs AS d
LEFT JOIN feedbacks AS f ON d.ID = f.dirID
GROUP BY d.ID
ORDER BY d.dirName
Но ако някой има по-добра идея нека сподели, защото SUM IF е доста статичен подход според мен (макар и да върши работа).
Re: Ето ти една стара и много ценна статия
Ами подхода е абсолютно същия, няма никаква разлика - използва се SUM IF. Проблема е, че в стейтмънта трябва да се изброят желаните колоните, и при промяна в структурата на таблицата ще е необходимо да се промени и заявката.
Чудех се дали има по гъвкав метод за генериране на pivot table в MySQL?
Чудех се дали има по гъвкав метод за генериране на pivot table в MySQL?
Re: Ето ти една стара и много ценна статия
s/MySQL/SQL/g ?
т.е. има ли такова животно в SQL стандарта?
Определено няма да намериш такова животно.
Въпросният тип статистическа обработка е пряко свързан с конкретните стойности в дадена колонка. Не само със структурата на таблицата но и със съдържанието.
salle.online.bg/sig
т.е. има ли такова животно в SQL стандарта?
Определено няма да намериш такова животно.
Въпросният тип статистическа обработка е пряко свързан с конкретните стойности в дадена колонка. Не само със структурата на таблицата но и със съдържанието.
salle.online.bg/sig