2013-06-13 4 views
2

Мне нужно подсчитать количество результатов для разбивки на страницы.Mysql рассчитывается с вложенными внутренними запросами в условии IF

Demo Query

select A.order_id, 
     IF(
      E.assign_date IS NOT NULL AND E.assign_date != '0000-00-00', 
      DATE_FORMAT(E.assign_date , '%d-%b-%y'), 
      (select data from other tables with other conditions) 
     ) AS assign_date, 
     ....... 
     where 
     ..... 
     and assign_date > 2013-08-01 

Количество запросов, которые я использую

Select count(A.order_id) from order A, size B, production E ........... where ....... and assign_date > 2013-08-01 

мне нужно добавить, что если условие, так что я могу рассчитывать результаты правильно

Longer версии

Я проверил вопрос s опубликовано на SO, и не смог найти ответ. Я работаю на странице, где я показываю разбивку на страницы.

Для разбивки на страницы я использовал счетчик, который работает. В запросе графа нет этого условия.

Для получения фактического запроса, я хочу, чтобы я мог опубликовать весь свой запрос здесь, но он имеет более 200 строк, если их отсортировать хорошо.

Для разбивки на страницы я использую следующий запрос.

$strQuery = "SELECT COUNT(DISTINCT(A.order_id)) AS totalRecs FROM $tbls WHERE $whereClause $WhereExt"; 

$tbls и $whereClause очень долго.

В таблице orders таблица I m содержит assing_on поле даты, которое показывает, что заказ назначен для производства. Я создал страницу списка результатов из данных, а в PHP добавил, что если assign_on дата пуста/null. Если это, я запускаю другой запрос, чтобы получить расчетную дату начала производства.

Предполагаемая дата начала производства получает дату от количества расчетов и параметры

  1. Orders.estimated даты поставки (это устанавливается при размещении заказа)
  2. mustReadyDate = предполагаемая дата - буфер пересылки (другая таблица) - поставщик праздники (еще 3 таблицы) - поставщик выходные (еще 2 таблицы)
  3. totalDaysRequired для производства = общая длина порядка/Стандартные скорости плетения в день (другую таблица)
  4. muststartdate = mustReadyDate - totalDa ysRequired;

Выше четыре точки находятся в запросе, не PHP работы не связаны с

данных выборки запроса, имеющий это условие и считать запрос не имея этого состояния в данный момент.

IF(
    E.assign_date IS NOT NULL AND E.assign_date != '$mysqlEmptyDate', 
    DATE_FORMAT(E.assign_date , '" . reporting_DateFormat . "'), 
    ($mustLoomStartDateQry_fm) 
) AS assign_date, 

мне нужно добавить еще одно условие в том, где положение графа запроса, чтобы проверить, если aasign_date > one week from today я просто хочу знать, как я могу добавить такой длинный запрос в части счета, поэтому я только выполнить по запросу.

** EDIT **

Если какой-либо один заинтересован в просмотре полный запрос http://pastebin.com/zqzbpEei но, пожалуйста, я предлагаю вам это только, чтобы дать вам представление о ...

+0

Почему бы не использовать КОГДА? –

+0

'Когда' где? Мне нужно подсчет, если ЕСЛИ ЭЛСЕ обусловлено. –

+0

КОГДА можно делать то же, что и EL ELSE, и является стандартом. –

ответ

0

Если вам нужно PAGINATION поэтому, пожалуйста, попробуйте этот .......

$Query="select * from table_name_here where colunm_name='content_which_you_find'"; 

, например

$Query="select * from android where type='Casual'"; 

, если вам не нужно состояние поэтому, пожалуйста, удалите его .... ..

как $Query="select * from android";

Теперь выполнить выше запрос с помощью этой

$Result=mysql_query($Query); 

теперь получить общее количество строк выбираются с помощью этого изменения

$TotalRows=mysql_num_rows($Result); 

$onepage=9; 

выше 9 вам нравится, сколько вы хотите, чтобы отобразить записи на одной странице

Теперь вставьте следующий код, чтобы получить пагинация

$d=($page-1)*$onepage; 
$SqlQuery="select * from android where type='Casual' order by id desc LIMIT $d, $onepage"; 
$ResultSql=mysql_query($SqlQuery) or die("error1?"); 

сейчас ставят петли для печати данных

while($row = mysql_fetch_array($ResultSql)) 
{ 
echo $row[1]; 
echo $row[2]; 
} 

сейчас ставят под кодом

for($i=1;$i<=$np;$i++) 
{ 
echo "<a href='currnt_page_name_here.php?page=$i'> $i </a>"; 
} 

Попробуйте сейчас это, если какая-либо ошибка сказать мне

+0

Извините, вы пропустили мой вопрос. у моего запроса есть условия, и в условиях, когда я получаю данные из разных таблиц. Если я сделаю 'select * from ...', поскольку вы предположили, что время выполнения моего запроса составляет более 60 секунд только для 50 записей. –

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