Перейти к содержимому


Формирование фильтров из представления.


Сообщений в теме: 3

#1 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 06 Октябрь 2012 - 12:55

Добрый день. Создал представление.
Запрос на выборку выглядит так, возвращает 32:

SELECT count(id) as nfrm2 FROM f_data42 WHERE f1157  >= '2012-09-05' AND f1157 <= '2012-09-07' AND status = 0 AND f438='10'

Создаю фильтр в таблицу:

http://127.0.0.1:7558/report.php?id=28&redirect=yes&manager=10&date1=05.09.2012&date2=07.09.2012&type=Икомпании

Выводит 33 записи.
Поиск: поле "в работе с" в периоде с 05.09.2012 по 07.09.2012 и поле "Менеджер" равно " Анна"

Код фильтра:
if ($_GET['type']=="Икомпании")
{
$_SESSION[$ses_id]['search'][42][0]['field'] = 1157;
$_SESSION[$ses_id]['search'][42][0]['term'] = "period";
$_SESSION[$ses_id]['search'][42][0]['value_field'] = form_local_time($_REQUEST['date1']);
$_SESSION[$ses_id]['search'][42][0]['value_field2'] = form_local_time($_REQUEST['date2']);
$_SESSION[$ses_id]['search'][42][0]['union'] = " and ";

$_SESSION[$ses_id]['search'][42][1]['field'] = 438;
$_SESSION[$ses_id]['search'][42][1]['term'] = "=";
$_SESSION[$ses_id]['search'][42][1]['value_field'] =  $_GET['manager'];;
$_SESSION[$ses_id]['search'][42][1]['union'] = "";

header("Location: ".$config["site_root"]."/fields.php?table=42&filter=48");
}

Почему так? Какой запрос отправляет фильтр?

#2 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 06 Октябрь 2012 - 14:00

А что не так то, не совсем понял?

#3 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 07 Октябрь 2012 - 18:48

Просмотр сообщенияCbCoder (06 Октябрь 2012 - 14:00) писал:

А что не так то, не совсем понял?
Мой запрос находит 32 записи. Через фильтр - 33. Одна запись теряется. Интересует запрос самой клиентбазы для сравнения разности результатов.

#4 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 159 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 07 Октябрь 2012 - 20:56

Запрос клиентбазы:
SELECT * FROM f5_data42 WHERE status=0 and ((left(f1157,10)>='2012-09-05' and left(f1157,10)<='2012-09-07') and f438='10') ORDER BY f2445, `id` desc, id LIMIT 100;

Мой запрос:

SELECT * FROM f5_data42 WHERE f1157  >= '2012-09-05' AND f1157 <= '2012-09-07' AND status = 0 AND abs(f438)='10'

Результат этих запросов теоретически должен быть одинаковым. Имеется ввиду количество полученных записей. Однако они разные. Второй запрос не содержит запись, где поле f1157 содержит значение 2012-09-07 10:39:14. Вопрос решен.

Сообщение отредактировал wondertalik: 07 Октябрь 2012 - 21:35






Количество пользователей, читающих эту тему: 2

0 пользователей, 2 гостей, 0 анонимных