данные SELECT возвращает значения
нужно сделать если значения < 0 то вставляет NULL
SELECT COUNT(`tel_client_from_doc`) AS TELEFON
FROM `documente`
JOIN membrii ON documente.ID_MEMBRU_SUPPORT = membrii.ID_MEMBRU
WHERE login ='ABxx'
AND IS_STARE_DOC =2
AND data_close_DOC
BETWEEN '2012-02-01'
AND '2012-02-02'
Спустя 8 минут, 25 секунд (2.03.2012 - 12:06) Visman написал(а):
Зачем тут JOIN? Почему ни где в запросе, кроме джойна, не указывается какое поле какой таблице принадлежит?
Спустя 42 минуты, 23 секунды (2.03.2012 - 12:48) dir3 написал(а):
SELECT COUNT( `tel_client_from_doc` ) AS TELEFON
FROM `documente`
JOIN membrii ON documente.ID_MEMBRU_SUPPORT = membrii.ID_MEMBRU
WHERE membrii.login = 'ABxx'
AND IS_STARE_DOC =2
AND documente.data_close_DOC
BETWEEN '2012-02-01'
AND '2012-02-02'
FROM `documente`
JOIN membrii ON documente.ID_MEMBRU_SUPPORT = membrii.ID_MEMBRU
WHERE membrii.login = 'ABxx'
AND IS_STARE_DOC =2
AND documente.data_close_DOC
BETWEEN '2012-02-01'
AND '2012-02-02'
Спустя 13 минут, 8 секунд (2.03.2012 - 13:01) dir3 написал(а):
суть в том что мне должна мне нужна чтоб вывело таки результат
где номера 1 , 2, это номера закрытых заявок за данное число
join стоит потому что в таблице documente есть id юзера (ID_MEMBRU_SUPPORT) который равен ID_MEMBER из таблицы membrii и в таблицы membrii есть данные о логине и департамента, хочу построить pivot table базируется на данном примере
select name,
if(exam=1,score,null) as exam1,
if(exam=2,score,null) as exam2,
if(exam=3,score,null) as exam3,
if(exam=4,score,null) as exam4
Login 01.feb 02.feb 03.feb 04.feb 05.feb 06.feb 07.feb
ABxx 2 1 1
где номера 1 , 2, это номера закрытых заявок за данное число
join стоит потому что в таблице documente есть id юзера (ID_MEMBRU_SUPPORT) который равен ID_MEMBER из таблицы membrii и в таблицы membrii есть данные о логине и департамента, хочу построить pivot table базируется на данном примере
select name,
if(exam=1,score,null) as exam1,
if(exam=2,score,null) as exam2,
if(exam=3,score,null) as exam3,
if(exam=4,score,null) as exam4
Спустя 2 минуты, 51 секунда (2.03.2012 - 13:04) Visman написал(а):
Смотрю я на этот запрос и что-то меня сомнения берут:
Он возвращает одну строку с одним полем, т.е. одно число!? Или я не прав?
Он возвращает одну строку с одним полем, т.е. одно число!? Или я не прав?
Спустя 6 минут, 48 секунд (2.03.2012 - 13:11) dir3 написал(а):
ты прав но это наброски
этот SELECT выбирает количество закрытых заявок 1 числа то есть юзер ABxx закрыл в 2012-02-01 2 заявки
этот SELECT выбирает количество закрытых заявок 1 числа то есть юзер ABxx закрыл в 2012-02-01 2 заявки
Спустя 8 минут, 3 секунды (2.03.2012 - 13:19) Visman написал(а):
Можно заменить
на
Но возможно тормоза будут
SELECT COUNT(`tel_client_from_doc`) AS TELEFON
на
SELECT if(COUNT(`tel_client_from_doc`)<0, NULL, COUNT(`tel_client_from_doc`)) as TELEFON
Но возможно тормоза будут
Спустя 40 секунд (2.03.2012 - 13:20) dir3 написал(а):
Login 01.feb 02.feb 03.feb 04.feb 05.feb 06.feb 07.feb
ABxx 2 1 1
- в pivot table нужно чтобы было
- Login это row header
- 01.feb,02..... это colum header
- ABxx 01.feb это distinc values
- значения 2 ,1 это calculated values
Спустя 14 минут, 26 секунд (2.03.2012 - 13:34) Visman написал(а):
Чтобы разбить по дням группируй относительно
Чтобы получить примерно это 01.feb бери
MONTHNAME(documente.data_close_DOC), DAYOFMONTH(documente.data_close_DOC)
Чтобы получить примерно это 01.feb бери
CONCAT(DAYOFMONTH(documente.data_close_DOC),' ',MONTHNAME(documente.data_close_DOC)
Спустя 55 минут, 56 секунд (2.03.2012 - 14:30) dir3 написал(а):
а тут что он хочет
#1248 - Every derived table must have its own alias
SELECT *
FROM
(SELECT login AS login, CONCAT( DAYOFMONTH( documente.data_close_DOC ) , ' ', MONTHNAME( documente.data_close_DOC ) ) AS DATE, tel_client_from_doc AS telefon
FROM `documente`
JOIN membrii ON documente.ID_MEMBRU_SUPPORT = membrii.ID_MEMBRU
WHERE membrii.login = 'ABaciu'
AND IS_STARE_DOC =2
AND documente.data_close_DOC
BETWEEN '2012-02-01'
AND '2012-02-02')
#1248 - Every derived table must have its own alias
SELECT *
FROM
(SELECT login AS login, CONCAT( DAYOFMONTH( documente.data_close_DOC ) , ' ', MONTHNAME( documente.data_close_DOC ) ) AS DATE, tel_client_from_doc AS telefon
FROM `documente`
JOIN membrii ON documente.ID_MEMBRU_SUPPORT = membrii.ID_MEMBRU
WHERE membrii.login = 'ABaciu'
AND IS_STARE_DOC =2
AND documente.data_close_DOC
BETWEEN '2012-02-01'
AND '2012-02-02')
Спустя 9 минут, 45 секунд (2.03.2012 - 14:40) Visman написал(а):
Цитата (dir3 @ 2.03.2012 - 19:30) |
#1248 - Every derived table must have its own alias |
Каждая таблица должна иметь свой псевдоним.
Еще в этом запросе двойной SELECT мне кажется лишний.
Спустя 3 часа, 18 минут (2.03.2012 - 17:58) dir3 написал(а):
Преобразования Столбца в строку в mysql
Реально ????
SELECT date
что типа 01.feb 02.feb 03.feb 04.feb 05.feb 06.feb 07.feb
Реально ????
SELECT date
что типа 01.feb 02.feb 03.feb 04.feb 05.feb 06.feb 07.feb
Спустя 31 минута, 33 секунды (2.03.2012 - 18:29) Visman написал(а):
Цитата (dir3 @ 2.03.2012 - 22:58) |
Преобразования Столбца в строку в mysql Реально ???? |
Я о таком не слышал.
Спустя 11 дней, 18 часов, 52 минуты, 58 секунд (14.03.2012 - 13:22) dir3 написал(а):
реализовал такои скрипт
есть соображения чтобы подсчитать сумму цифры из столбца ??
типа
select в БД
$i=0;
$str = '';
while ($i < $countE)
{
$str.= "SUM(CASE date WHEN '$aryRange[$i]' THEN 1 ELSE 0 END) '$aryRange[$i]',";
$i++;
};
$sql = "SELECT login,".$str."sum(1) as TOTAL FROM
(SELECT membrii.login AS login, CONCAT( DAYOFMONTH( documente.data_close_DOC ) , ' ', MONTHNAME( documente.data_close_DOC ) ) AS date
FROM membrii AS membrii
LEFT JOIN `documente` AS documente ON documente.ID_MEMBRU_SUPPORT = membrii.ID_MEMBRU
WHERE id_functia =7
AND documente.IS_STARE_DOC =2
AND documente.data_close_DOC
BETWEEN '$strDateFrom 00:00:00'
AND '$iDateFrom 23:59:59') AS PIVOT GROUP BY login";
Login 01.feb 02.feb 03.feb 04.feb 05.feb 06.feb TOTAL
ABxx 2 1 3
ABYx 2 3 5
есть соображения чтобы подсчитать сумму цифры из столбца ??
типа
Login 01.feb 02.feb 03.feb 04.feb 05.feb 06.feb TOTAL
ABxx 2 1 3
ABYx 2 3 5
SUM 6 4 8
select в БД
SELECT login,
SUM(CASE date WHEN '1 March' THEN 1 ELSE 0 END) '1 March',
SUM(CASE date WHEN '2 March' THEN 1 ELSE 0 END) '2 March',
SUM(CASE date WHEN '3 March' THEN 1 ELSE 0 END) '3 March', sum(1)
FROM
(SELECT membrii.login AS login, CONCAT( DAYOFMONTH( documente.data_close_DOC ) , ' ', MONTHNAME( documente.data_close_DOC ) ) AS date
FROM membrii AS membrii
LEFT JOIN `documente` AS documente ON documente.ID_MEMBRU_SUPPORT = membrii.ID_MEMBRU
WHERE id_functia =7
AND documente.IS_STARE_DOC =2
AND documente.data_close_DOC
BETWEEN '2012-03-01 00:00:00'
AND '2012-03-21 23:59:59') AS PIVOT GROUP BY login
Спустя 22 часа, 2 минуты, 22 секунды (15.03.2012 - 11:25) dir3 написал(а):
Модифицировал Select и всё ок
$sql ="SELECT IFNULL(login,'TOTALS') AS login,".$str."sum(1) as TOTAL FROM
(SELECT membrii.login AS login, CONCAT( DAYOFMONTH( documente.data_close_DOC ) , ' ', MONTHNAME( documente.data_close_DOC ) ) AS date
FROM membrii AS membrii
LEFT JOIN `documente` AS documente ON documente.ID_MEMBRU_SUPPORT = membrii.ID_MEMBRU
WHERE id_functia =7
AND documente.IS_STARE_DOC =2
AND documente.data_close_DOC
BETWEEN '$strDateFrom 00:00:00'
AND '$iDateFrom 23:59:59') AS PIVOT GROUP BY login WITH ROLLUP";