powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Странный код от программистов
8 сообщений из 8, страница 1 из 1
Странный код от программистов
    #39878399
IronMike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!
Достался в наследство такой код:

select fff.id_cont, max(k.item_name) as item_name
from transit2.fin_params_cont@sun fff
left join transit2.INF_INFOGROUP_ITEMS_C_TYP@sun k on k.id_item=fff.value.AccessVarchar2()
where fff.param='CONTRACT_TYPE'
group by fff.id_cont

Он всё правильно выгружает. Но когда я пытаюсь его завернуть в left join, то подтягивает некорректные данные.
Почему?

+ что такое и как работает fff.value.AccessVarchar2 ? я гуглил, но инфа не очень понятно написана...
...
Рейтинг: 0 / 0
Странный код от программистов
    #39878403
large5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
потому что для оракла пиши по оракловски и не надо тут это ansiвщину разводить .
...
Рейтинг: 0 / 0
Странный код от программистов
    #39878421
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IronMike,

ANYDATA

SY.
...
Рейтинг: 0 / 0
Странный код от программистов
    #39878432
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IronMike я гуглил, но инфа не очень понятно написана...

Доку читай. Ну и свой left join то покажи.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
SQL> create table tbl(val anydata)
  2  /

Table created.

SQL> insert
  2    into tbl
  3    values(anydata.convertvarchar2('String'))
  4  /

1 row created.

SQL> insert
  2    into tbl
  3    values(anydata.convertnumber(12345))
  4  /

1 row created.

SQL> insert
  2    into tbl
  3    values(anydata.convertdate(sysdate))
  4  /

1 row created.

SQL> commit;

Commit complete.

SQL> select  count(*)
  2    from  tbl t
  3    where 'String' = t.val.accessvarchar2()
  4  /

  COUNT(*)
----------
         1

SQL> select  count(*)
  2    from  tbl t
  3    where 12345 = t.val.accessnumber()
  4  /

  COUNT(*)
----------
         1

SQL> column VAL_TYPE format a20
SQL> column val format a30
SQL> select  *
  2    from  tbl
  3  /

VAL()
------------------------------
ANYDATA()
ANYDATA()
ANYDATA()

SQL> select  t.val.gettypename() val_type,
  2          case t.val.gettypename()
  3            when 'SYS.VARCHAR2' then t.val.accessvarchar2()
  4            when 'SYS.NUMBER' then to_char(t.val.accessnumber())
  5            when 'SYS.DATE' then to_char(t.val.accessdate(),'MM/DD/YYYY HH24:MI:SS')
  6          end val
  7    from  tbl t
  8  /

VAL_TYPE             VAL
-------------------- ------------------------------
SYS.VARCHAR2         String
SYS.NUMBER           12345
SYS.DATE             10/18/2019 10:24:23

SQL>  



SY.
...
Рейтинг: 0 / 0
Странный код от программистов
    #39878446
IronMike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
large5,
Ну так ведь без left joinа всё правильно выгружает))

Мой left join очень простой:


left join (select fff.id_cont, max(k.item_name) as item_name
from transit2.fin_params_cont@sun fff
left join transit2.INF_INFOGROUP_ITEMS_C_TYP@sun k on k.id_item=fff.value.AccessVarchar2()
where fff.param='CONTRACT_TYPE'
group by fff.id_cont) tt on u1.transit_id=tt.id_cont
...
Рейтинг: 0 / 0
Странный код от программистов
    #39878496
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IronMike,

На то он и outer чтобы подтягивать. Ты получишь все что выбрано из U1 независимо есть ли соответствие в TT по u1.transit_id=tt.id_cont или нет.

SY.
...
Рейтинг: 0 / 0
Странный код от программистов
    #39878503
IronMike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY,
Условно, в таблице есть 10 разных значений, по после left join подтягивается только одно.
Как это исправить?
...
Рейтинг: 0 / 0
Странный код от программистов
    #39878576
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IronMikeУсловно, в таблице есть 10 разных значений, по после left join подтягивается только одно.
Как это исправить?

В какой таблице? Начни уж говорить внятно. Если ты про TT, то left join между U1 & TT вернет все строки U1 и только те строки TT у которых u1.transit_id=tt.id_cont.

SY.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Странный код от программистов
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]