получить количество строк в самом запросе MySQL

0

Я хотел бы получить подсчет строки возвращаемого запроса в самом запросе. Затем я буду использовать его в основном запросе в случае if. Я добавил пример и, в качестве фиктивной строки, поставлю QUERY_ROW_COUNT. Есть ли какая-нибудь функция для достижения этой цели? Спасибо заранее... С уважением...

SELECT period_id, 
       lt_id, 
       period_name, 
       min_stay, 
       IF(QUERY_ROW_COUNT=1, 1,0) as tag 
  FROM (SELECT period_id, 
               lt_id, 
               period_name, 
               min_stay, 
               fromDate, 
               toDate, 
               DATEDIFF( '2010-12-27', '2010-12-10' ) as totalDays, 
               nightly_rate,
               case when ('2010-12-10' > fromDate AND '2010-12-27' < toDate) then  
                  DATEDIFF( '2010-12-27', '2010-12-10' )  
                  else 0 
               end as d6,
               case when ('2010-12-10' > fromDate AND '2010-12-27' > toDate) then 
                  DATEDIFF( toDate, '2010-12-10' )+1 
                  else 0 
               end as d7,
               case when ('2010-12-10' < fromDate AND '2010-12-27' < toDate) then 
                  DATEDIFF( '2010-12-27', fromDate ) 
                  else 0 
               end as d8,
               case when ('2010-12-10' < fromDate AND '2010-12-27' > toDate) then 
                  DATEDIFF( toDate, fromDate ) 
                  else 0 
               end as d9    
          FROM `lt_hperiods`
         WHERE ('2010-12-10' BETWEEN Date( fromDate ) AND Date( toDate )  ) 
            OR ( '2010-12-27' BETWEEN Date( fromDate ) AND Date( toDate ))
            OR ('2010-12-10' <= fromDate  AND  '2010-12-27' >= toDate )
           AND (lt_id=1)) MQS
Теги:
aggregate-functions

3 ответа

0
Лучший ответ

(SOLVED... это тег, который сканирует рабочее решение:) Спасибо за все предложения. Я забыл написать, что я уже пробовал все функции подсчета и подсчета. Я, однако, решил свою проблему, как это. Надеюсь, это помогает кому-то. mysql позволяет вам определять динамические переменные, которые являются большими.. Это ссылка:

http://www.xaprb.com/blog/2006/12/02/how-to-number-rows-in-mysql/

Это код:

set @countT = 0;
set @rowCount = 0;

SELECT MQ.period_id, MQ.lt_id, MQ.period_name, MQ.min_stay, MQ.fromDate, MQ.toDate, MQ.nightly_rate, MQ.periodDays, 
MQ.totalDays,
@countT := if(@countT = MQ.periodDays, 0 , @countT + MQ.periodDays) as periodDaysTotal, 
@rowCount:= @rowCount +1
FROM (
SELECT period_id, lt_id, period_name, min_stay, fromDate, toDate, totalDays, nightly_rate, (d1+d2+d3+d4+d5+d6+d7+d8+d9) periodDays 

FROM

(SELECT period_id, lt_id, period_name, min_stay, fromDate, toDate, DATEDIFF( '2010-05-02', '2010-03-10' ) as totalDays,  nightly_rate,

 case when ('2010-03-10' > fromDate AND '2010-05-02' < toDate) then DATEDIFF( '2010-05-02', '2010-03-10' ) else 0    end as d6,
 case when ('2010-03-10' > fromDate AND '2010-05-02' > toDate) then DATEDIFF( toDate, '2010-03-10' ) else 0  end as d7,
 case when ('2010-03-10' < fromDate AND '2010-05-02' < toDate) then DATEDIFF( '2010-05-02', fromDate ) else 0 end as d8,
 case when ('2010-03-10' < fromDate AND '2010-05-02' > toDate) then DATEDIFF( toDate, fromDate ) else 0 end as d9

 FROM `lt_hperiods`
 WHERE  
 ('2010-03-10' BETWEEN Date( fromDate ) AND Date( toDate )  ) OR
 ( '2010-05-02' BETWEEN Date( fromDate ) AND Date( toDate ))
 OR ('2010-03-10' <= fromDate  AND  '2010-05-02' >= toDate )
AND (lt_id=1)
) MQS ) MQ
0

Вы пытались использовать COUNT (*) или COUNT (DISTINCT period_id), где у вас QUERY_ROW_COUNT?

0

вы можете использовать count( 1 ) as some_variable в строке выбора в главном предложении from, а затем ссылаться на него как MQS.some_variable в выборе основного запроса.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню