|
|
|
| Вопрос в следующем:
создано два представления, создаю третье на основе этих двух. Связь организовываю через числовые поля, которые являются ключевыми (autoincrement) в таблицах, на основе которых построены эти представления.
необходимо связать эти представления через ещё одно поле, тип которого varchar, в нём содержатся номера контрактов, которые могут содержать как числовое так и текстовое значение, например 345Ш
проблема в том что при попытке связать представления через это поле (контракт) запрос выдаёт непредсказуемый результат, т.е. без учёта этого поля, при связи только по числовым полям выдаёт правильные цифры, при связи с учётом номера контракта - врёт
пробовал применить функции trim() и ifnull(), не помогло, изменил все NULL значения поля на 0, тоже не помогло
в чём может быть загвоздка?
заранее спасибо. | |
|
|
|
|
|
|
|
для: ronin80
(24.06.2008 в 10:56)
| | Представления сохраняются на сервере в виде текстового файла (с SQL-запросом непосредственно к таблицам) - посмотрите как конечный запрос выглядит (если он не секретный поместите его сюда). | |
|
|
|
|
|
|
|
для: 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: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,Чорон | |
|
|
|
|