Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Связь представлений
 
 автор: ronin80   (24.06.2008 в 10:56)   письмо автору
 
 

Вопрос в следующем:

создано два представления, создаю третье на основе этих двух. Связь организовываю через числовые поля, которые являются ключевыми (autoincrement) в таблицах, на основе которых построены эти представления.

необходимо связать эти представления через ещё одно поле, тип которого varchar, в нём содержатся номера контрактов, которые могут содержать как числовое так и текстовое значение, например 345Ш

проблема в том что при попытке связать представления через это поле (контракт) запрос выдаёт непредсказуемый результат, т.е. без учёта этого поля, при связи только по числовым полям выдаёт правильные цифры, при связи с учётом номера контракта - врёт

пробовал применить функции trim() и ifnull(), не помогло, изменил все NULL значения поля на 0, тоже не помогло

в чём может быть загвоздка?

заранее спасибо.

   
 
 автор: cheops   (24.06.2008 в 13:53)   письмо автору
 
   для: ronin80   (24.06.2008 в 10:56)
 

Представления сохраняются на сервере в виде текстового файла (с SQL-запросом непосредственно к таблицам) - посмотрите как конечный запрос выглядит (если он не секретный поместите его сюда).

   
 
 автор: ronin80   (24.06.2008 в 14:26)   письмо автору
 
   для: cheops   (24.06.2008 в 13:53)
 

если вы про frm файл то вот его содержание

TYPE=VIEW
query=select ifnull(`vxod_br_group`.`vx_massa`,0) AS `vx_massa`,ifnull(`vxod_br_group`.`vx_kolvo`,0) AS `vx_kolvo`,ifnull(`isxod_br_group`.`isx_massa`,0) AS `isx_massa`,ifnull(`isxod_br_group`.`isx_kolvo`,0) AS `isx_kolvo`,ifnull(`isxod_br_group`.`diff_massa`,0) AS `diff_massa`,ifnull(`vxod_br_group`.`short_name`,`isxod_br_group`.`SHORT_NAME`) AS `uch_card`,ifnull(`vxod_br_group`.`date`,`isxod_br_group`.`DATE`) AS `date`,ifnull(`vxod_br_group`.`fact_contract`,`isxod_br_group`.`fact_contract`) AS `fact_contract` from (`central`.`vxod_br_group` left join `central`.`isxod_br_group` on(((`vxod_br_group`.`short_name` = `isxod_br_group`.`SHORT_NAME`) and (`vxod_br_group`.`date` = `isxod_br_group`.`DATE`) and (`vxod_br_group`.`fact_contract` = `isxod_br_group`.`fact_contract`)))) union select ifnull(`vxod_br_group`.`vx_massa`,0) AS `vx_massa`,ifnull(`vxod_br_group`.`vx_kolvo`,0) AS `vx_kolvo`,ifnull(`isxod_br_group`.`isx_massa`,0) AS `isx_massa`,ifnull(`isxod_br_group`.`isx_kolvo`,0) AS `isx_kolvo`,ifnull(`isxod_br_group`.`diff_massa`,0) AS `diff_massa`,ifnull(`isxod_br_group`.`SHORT_NAME`,`vxod_br_group`.`short_name`) AS `uch_card`,ifnull(`isxod_br_group`.`DATE`,`vxod_br_group`.`date`) AS `date`,ifnull(`isxod_br_group`.`fact_contract`,`vxod_br_group`.`fact_contract`) AS `fact_contract` from (`central`.`isxod_br_group` left join `central`.`vxod_br_group` on(((`isxod_br_group`.`SHORT_NAME` = `vxod_br_group`.`short_name`) and (`isxod_br_group`.`DATE` = `vxod_br_group`.`date`) and (`isxod_br_group`.`fact_contract` = `vxod_br_group`.`fact_contract`))))
md5=f069e8608052199351b22f97582f0305
updatable=0
algorithm=0
with_check_option=0
revision=1
timestamp=2008-06-24 09:00:07
create-version=1
source=Create view balance_br as
\nSELECT ifnull(central.vxod_br_group.vx_massa,0) as vx_massa,
\n ifnull(central.vxod_br_group.vx_kolvo,0) as vx_kolvo,
\n ifnull(central.isxod_br_group.isx_massa,0) as isx_massa,
\n ifnull(central.isxod_br_group.isx_kolvo,0) as isx_kolvo,
\n ifnull(central.isxod_br_group.diff_massa,0) as diff_massa,
\n ifnull(central.vxod_br_group.short_name,central.isxod_br_group.short_name) as uch_card,
\n ifnull(central.vxod_br_group.date,central.isxod_br_group.date) as date,
\n ifnull(central.vxod_br_group.fact_contract,central.isxod_br_group.fact_contract) as fact_contract
\n FROM central.vxod_br_group
\n LEFT OUTER JOIN
\n central.isxod_br_group
\n ON (central.vxod_br_group.short_name = central.isxod_br_group.short_name)
\n AND (central.vxod_br_group.date = central.isxod_br_group.date)
\n AND (central.vxod_br_group.fact_contract = central.isxod_br_group.fact_contract)
\nunion
\nSELECT ifnull(central.vxod_br_group.vx_massa,0) as vx_massa,
\n ifnull(central.vxod_br_group.vx_kolvo,0) as vx_kolvo,
\n ifnull(central.isxod_br_group.isx_massa,0) as isx_massa,
\n ifnull(central.isxod_br_group.isx_kolvo,0) as isx_kolvo,
\n ifnull(central.isxod_br_group.diff_massa,0) as diff_massa,
\n ifnull(central.isxod_br_group.short_name,central.vxod_br_group.short_name) as uch_card,
\n ifnull(central.isxod_br_group.date,central.vxod_br_group.date) as date,
\n ifnull(central.isxod_br_group.fact_contract,central.vxod_br_group.fact_contract) as fact_contract
\n FROM central.isxod_br_group
\n LEFT OUTER JOIN
\n central.vxod_br_group
\n ON (central.isxod_br_group.short_name = central.vxod_br_group.short_name)
\n AND (central.isxod_br_group.date = central.vxod_br_group.date)
\n AND (central.isxod_br_group.fact_contract = central.vxod_br_group.fact_contract)

вот если выделенные строки убрать всё работает как надо

   
 
 автор: ronin80   (24.06.2008 в 14:37)   письмо автору
 
   для: ronin80   (24.06.2008 в 14:26)
 

вот какие значения в этом поле присутствуют

запрос:
select group_concat(distinct fact_contract) from act_pr_lines

результаты:
0,044/19,112/146,120/57,120/89,129/94,129/95,129/98,219/914,236/560,239/117,239/133,243/127,243/129,243/207,243/208,243/209,243/210,243/211,243/214,243/219,243/220,
243/262,245/2,256/34,27001,27003,27004,27005,27006,27010,27011,27013,27014,27015,27016,27017,27018,27019,27020,27023,27024,27025,27027,27028,27029,27029/IШ,27029/,27030,27031,27032,27033,27607,35230,35233,35234,35235,35237,35238,35242,35244,35245,35246,35248,35250,35253,35256,35301,35330,41/425,Чорон

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования