2014-02-15 3 views
1

Извините, но я не уверен, как сформулировать этот вопрос или если это возможно, но в основном я использую оператор select, в котором я хотел бы отображать столбец, показывающий количество критериев, когда критерии выполняется. НапримерMYSQL Row Count, если критерии выполнены

SELECT pageID, isHome, if(ishome = 1, 'count?', 0) AS Passed 
FROM pages 

Я хотел бы passed столбец, чтобы показать текущий счет вроде этого

PageID | ishome | passed 
10031 | 0  | 0 
10032 | 1  | 1 
10033 | 1  | 2 
10034 | 1  | 3 

Спасибо за любую помощь

+0

Вы можете посмотреть по адресу : //stackoverflow.com/questions/664700/calculate-a-running-total-in-mysql –

+0

Можете ли вы опубликовать свой ожидаемый результат –

+0

Thx Brian, это был именно то, что я искал – user3313704

ответ

0
SELECT pageID, isHome, count(*) AS Passed 
    FROM pages 
    where ishome = 1 
    GROUP BY PageID 

DEMO

, если вы хочу показать весь результат, тогда используйте это

SELECT pageID, isHome, if(ishome = 1, count(*), 0) AS Passed 
FROM pages 
group by pageID,ishome ; 

DEMO

+0

Это работает!?! – Strawberry

+0

@Strawberry да это работа посмотреть демо –

+0

Да, это НЕ ОПРЕДЕЛЕННО не то, что нужно! :-) – Strawberry

1

Попробуйте что-то вроде следующего (непроверенные)

select a.pageid, a.ishome, sum(b.ishome) passed 
from 
pages a join pages b 
on a.pageid>= b.pageid 
group by a.pageid, a.ishome 
order by a.pageid 
0

Не уверен, но я думаю, что это хочу, чтобы вы хотите.

SELECT pageID, isHome, 
case when(ishome = 1) 
    then count(*) 
    else 0 
end Passed FROM Table1 
group by pageID; 

sqlfiddle

ИЛИ если вы хотите, количество переданных страниц

SELECT isHome, 
case when(ishome = 1) 
    then count(*) 
    else 0 
end Passed FROM Table1 
group by isHome; 

sqlfiddle

0

Попробуйте что-то вроде этого

SELECT pageID, isHome, 
CASE isHome 
    WHEN 1 THEN SELECT COUNT(*) FROM pages p 
       WHERE p.isHome = 1 AND p.pageID <= pageID 
    ELSE 0 
END as passed 
FROM pages 
ORDER BY pageID ASC 
+0

Извините за задержку в ответе. Это выглядит хорошо, но я надеялся показать значение столбца «пройденный», чтобы показать добавочное значение. Например, если бы у меня было 4 строки, которые соответствовали isHome = 1, каждый пройденный столбец в каждой строке не показывал бы 4, а показывал 1,2,3,4. Не уверен, что это имеет смысл – user3313704

Смежные вопросы