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


Вопрос по связям таблиц


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

#1 slavem

    Участник

  • Пользователи
  • PipPip
  • 13 сообщений

Отправлено 29 Апрель 2010 - 20:57

Данные по счетам хранятся в data43, при этом поле компании - f839.
Компании - в data42 по полю id.
Логично было бы, что эти поля совпадают, однако они разные (интервал значений f839 - 14-19, id- 50-56)
При этом в отчете по компаниям, где используется эта связь суммы выводятся. а названия нет.
НО - в таблице счета названия все корректны.
Где то еще таблица связей?

#2 slavem

    Участник

  • Пользователи
  • PipPip
  • 13 сообщений

Отправлено 29 Апрель 2010 - 21:28

Просмотр сообщенияslavem (29.4.2010, 20:57) писал:

Данные по счетам хранятся в data43, при этом поле компании - f839.
Компании - в data42 по полю id.
Логично было бы, что эти поля совпадают, однако они разные (интервал значений f839 - 14-19, id- 50-56)
При этом в отчете по компаниям, где используется эта связь суммы выводятся. а названия нет.
НО - в таблице счета названия все корректны.
Где то еще таблица связей?


Нашел!!!!!!!!!!
В отчете сначала сделал запрос по полю f774 из data71, а потом по этой записи из data 42 нашел название


А еще вчера не знал что такое php sql smarty !!!!!!!!!!

#3 CbCoder

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

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

Отправлено 30 Апрель 2010 - 08:30

Поле f839 из таблицы Счета является полем связи с таблицей Реквизиты, а не Контрагенты. Это легко можно увидеть в свойствах поля.

#4 slavem

    Участник

  • Пользователи
  • PipPip
  • 13 сообщений

Отправлено 30 Апрель 2010 - 10:07

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

#5 CbCoder

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

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

Отправлено 30 Апрель 2010 - 11:03

Просмотр сообщенияslavem (30.4.2010, 11:07) писал:

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

#6 slavem

    Участник

  • Пользователи
  • PipPip
  • 13 сообщений

Отправлено 30 Апрель 2010 - 11:35

В отчете "Доход по компаниям" столбец "Компания" заполняется из таблицы 42, по полю f839 из 43 таблицы, но значения 43.f839 и 42.id не совпадают!

#7 CbCoder

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

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

Отправлено 30 Апрель 2010 - 11:48

Совершенно верно, похоже ошибка кода отчета. Будем исправлять.

#8 CbCoder

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

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

Отправлено 30 Апрель 2010 - 15:00

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

$date1 = $_REQUEST['date1']?$_REQUEST['date1']:date("d.m.Y");
  $date2 = $_REQUEST['date2']?$_REQUEST['date2']:date("d.m.Y");
  $date3 = date("d.m.Y", mktime(0,0,0,date("m"),date("d")-30,date("Y")));
  $date4 = date("d.m.Y");
  $date5 = date("d.m.Y", mktime(0,0,0,date("m"),date("d")-60,date("Y")));
  $date6 = date("d.m.Y", mktime(0,0,0,date("m"),date("d")-31,date("Y")));
  
  if ($_REQUEST['_type'])
	{
	  unset($_SESSION[$ses_id]['on_filter']);
	  
	  if ($_REQUEST['_type']=="Месяц")
		{
		  $_SESSION[$ses_id]['on_filter'][436] = 1;
		  $_SESSION[$ses_id]['term_filter'][436] = "period";
		  $_SESSION[$ses_id]['value_filter'][436] = $date3." 00:00";
		  $_SESSION[$ses_id]['value_filter2'][436] = $date4." 23:59";
		  
		  $_SESSION[$ses_id]['on_filter'][839] = 1;
		  $_SESSION[$ses_id]['term_filter'][839] = "=";
		  $_SESSION[$ses_id]['value_filter'][839] = $_REQUEST['_company'];
		}
		elseif ($_REQUEST['_type']=="Месяц2")
		{
		  $_SESSION[$ses_id]['on_filter'][436] = 1;
		  $_SESSION[$ses_id]['term_filter'][436] = "period";
		  $_SESSION[$ses_id]['value_filter'][436] = $date5." 00:00";
		  $_SESSION[$ses_id]['value_filter2'][436] = $date6." 23:59";
		  
		  $_SESSION[$ses_id]['on_filter'][839] = 1;
		  $_SESSION[$ses_id]['term_filter'][839] = "=";
		  $_SESSION[$ses_id]['value_filter'][839] = $_REQUEST['_company'];
		}
		elseif ($_REQUEST['_type']=="Все")
		{
		  $_SESSION[$ses_id]['on_filter'][839] = 1;
		  $_SESSION[$ses_id]['term_filter'][839] = "=";
		  $_SESSION[$ses_id]['value_filter'][839] = $_REQUEST['_company'];
		}
		else
		{
		  $_SESSION[$ses_id]['on_filter'][436] = 1;
		  $_SESSION[$ses_id]['term_filter'][436] = "period";
		  $_SESSION[$ses_id]['value_filter'][436] = $date1." 00:00";
		  $_SESSION[$ses_id]['value_filter2'][436] = $date2." 23:59";
		  
		  $_SESSION[$ses_id]['on_filter'][839] = 1;
		  $_SESSION[$ses_id]['term_filter'][839] = "=";
		  $_SESSION[$ses_id]['value_filter'][839] = $_REQUEST['_company'];
		}
	  
	  header("Location: ".$config["site_root"]."/fields.php?table=43");
	}
  
  $sqlQuery = "SELECT * FROM ".DATA_TABLE."43 GROUP BY f839";
  $result = mysql_query($sqlQuery) or die(mysql_error()."<br>".$sqlQuery);
  while ($row = mysql_fetch_array($result))
	{
	  $data['company'] = $row['f839'];
	  
	  $sqlQuery = "SELECT * FROM ".DATA_TABLE."71 WHERE id='".$data['company']."'";
	  $result2 = mysql_query($sqlQuery) or die(mysql_error()."<br>".$sqlQuery);
	  $row2 = mysql_fetch_array($result2);
	  $sqlQuery = "SELECT * FROM ".DATA_TABLE."42 WHERE id='".$row2['f774']."'";
	  $result2 = mysql_query($sqlQuery) or die(mysql_error()."<br>".$sqlQuery);
	  $row2 = mysql_fetch_array($result2);
	  $data['company_name'] = $row2['f435'];
	  
	  $sqlQuery = "SELECT count(*) as cnt, sum(f454) as summa FROM ".DATA_TABLE."43 WHERE f436>='".form_eng_time($date3." 00:00:00")."' AND f436<='".form_eng_time($date4." 23:59:59")."' AND f839='".$data['company']."'";
	  $result2 = mysql_query($sqlQuery);
	  $row2 = mysql_fetch_array($result2);
	  $data['month'] = $row2['cnt'];
	  $data['smonth'] = number_format($row2['summa'], 2, ',', '');
	  
	  $sqlQuery = "SELECT count(*) as cnt, sum(f454) as summa FROM ".DATA_TABLE."43 WHERE f436>='".form_eng_time($date5." 00:00:00")."' AND f436<='".form_eng_time($date6." 23:59:59")."' AND f839='".$data['company']."'";
	  $result2 = mysql_query($sqlQuery);
	  $row2 = mysql_fetch_array($result2);
	  $data['month2'] = $row2['cnt'];
	  $data['smonth2'] = number_format($row2['summa'], 2, ',', '');
	  
	  $sqlQuery = "SELECT count(*) as cnt, sum(f454) as summa FROM ".DATA_TABLE."43 WHERE f839='".$data['company']."'";
	  $result2 = mysql_query($sqlQuery);
	  $row2 = mysql_fetch_array($result2);
	  $data['all'] = $row2['cnt'];
	  $data['sall'] = number_format($row2['summa'], 2, ',', '');
	  
	  $sqlQuery = "SELECT count(*) as cnt, sum(f454) as summa FROM ".DATA_TABLE."43 WHERE f436>='".form_eng_time($date1." 00:00:00")."' AND f436<='".form_eng_time($date2." 23:59:59")."' AND f839='".$data['company']."'";
	  $result2 = mysql_query($sqlQuery);
	  $row2 = mysql_fetch_array($result2);
	  $data['choice'] = $row2['cnt'];
	  $data['schoice'] = number_format($row2['summa'], 2, ',', '');
	  
	  $lines[] = $data;
	}
  
  $smarty->assign("date1", $date1);
  $smarty->assign("date2", $date2);
  $smarty->assign("lines", $lines);






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

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