Текущее время: Пн, июл 21 2025, 06:47

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
 Заголовок сообщения: select с inner join
СообщениеДобавлено: Ср, июн 28 2006, 16:33 
Гость
не понимаю, почему не работает.

есть такой селект:

select * from bsis as bsis
inner join bsid as bsid
on
bsis~BUKRS = bsid~BUKRS AND
bsis~BELNR = bsid~BELNR AND
bsis~GJAHR = bsid~GJAHR
into corresponding fields of table itab
where bsid~kunnr = kunnr
and bsis~HKONT in HKONT
.

вообще говоря, он должен выбрать порядка 1000 документов, выбирает всего пару.

есть документ с BELNR = Х, который присутствует и в той и в другой таблице, но почему-то в этот джоин он не попадает.


если посмотреть руками по данному ключу в таблицах все хорошо.


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, июн 28 2006, 17:10 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, мар 25 2005, 11:46
Сообщения: 282
Откуда: SPb
На первый взгляд все хорошо... Проверь условия, может ты их не учитываешь?
PS А зачем писать ... as bsis... ? Если не писать, будет то же самое, к таблице можно будет обращаться по ее же имени...

_________________
Лучше сделать и пожалеть, чем не сделать и потом жалеть.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:   Тема решена
СообщениеДобавлено: Ср, июн 28 2006, 18:09 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
1.Select некорректный - должно быть дополнительное условие соединения.
Иначе для документа с позициями
1 01 2100 6211300000
2 50 9114080100 9114080100
3 50 6802101000 6802101000
4 40 9114080300 9114080300
5 50 9114080100 9114080100

будут неверно определяться поля по BSID...
А ведь бывают еще ситуации:
- когда в документе есть несколько позиций дебитора
- когда позиция дебитора выравнена и находится не в BSID, а в BSAD

2.Проверьте параметры выбора hkont и kunnr

_________________
С уважением,
Удав.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июн 29 2006, 08:49 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Ср, сен 21 2005, 10:01
Сообщения: 651
Откуда: СССР
BUZEI надо в Джоин еще указать...
Но от этого документов больше не станет :)

Попробуй посмотреть в транзакции sqvi такой джоин, сколько она выберет.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июн 29 2006, 15:42 
Гость
Удав написал(а):
1.Select некорректный - должно быть дополнительное условие соединения.
Иначе для документа с позициями
1 01 2100 6211300000
2 50 9114080100 9114080100
3 50 6802101000 6802101000
4 40 9114080300 9114080300
5 50 9114080100 9114080100

будут неверно определяться поля по BSID...
А ведь бывают еще ситуации:
- когда в документе есть несколько позиций дебитора
- когда позиция дебитора выравнена и находится не в BSID, а в BSAD

2.Проверьте параметры выбора hkont и kunnr


такой же select есть для BSAD/

спасибо, у меня все получилось


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, мар 01 2007, 19:04 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, янв 16 2007, 19:00
Сообщения: 168
Откуда: город
Возник небольшой вопрос. Есть код:
Code:
SELECT ...
       FROM t1 JOIN t2
       ON t1~f1 = t2~f2
       INTO TABLE gt_join.

В таблицах t1 и t2 точно есть записи с одинаковыми значениями полей f1 и f2. Однако gt_join остается пустой. Может ли это быть связано с тем, что f1 это c(10), а f2 - n(7)? Если да, то возможно ли использование джойна в этой ситуации, т.е. чтобы данные все-таки выбирались? Спасибо.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, мар 01 2007, 20:01 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
влад написал(а):
Возник небольшой вопрос. Есть код:
Code:
SELECT ...
       FROM t1 JOIN t2
       ON t1~f1 = t2~f2
       INTO TABLE gt_join.

В таблицах t1 и t2 точно есть записи с одинаковыми значениями полей f1 и f2. Однако gt_join остается пустой. Может ли это быть связано с тем, что f1 это c(10), а f2 - n(7)? Если да, то возможно ли использование джойна в этой ситуации, т.е. чтобы данные все-таки выбирались? Спасибо.

А что значит одинаковые? Проверьте что там хранится во внутреннем формате:
если f2='0000001', то и в f1 должно быть '0000001 '.
И посмотреть правила преобразования для различных типов в БД стоит.'

_________________
"После" - не значит "вследствие"


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, мар 01 2007, 22:41 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
У меня в 4.6C JOIN работает только, если f1 и f2 принадлежат одинаковым доменам. В вашем случае видимо такая же ситуация, поэтому если выборка из t2 с учетом WHERE не очень большая, можно например так:

SELECT ... FROM t2 INTO TABLE lt_t2 WHERE ....
SORT lt_t2 BY f2.

SELECT ... FROM t1 INTO wa1.
READ TABLE lt_t2 WITH KEY f2 = wa1-f1 BINARY SEARCH.
CHECK sy-subrc IS INITIAL.
...
ENDSELECT.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, мар 02 2007, 08:42 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
vga написал(а):
У меня в 4.6C JOIN работает только, если f1 и f2 принадлежат одинаковым доменам.


Не верю.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, мар 02 2007, 13:04 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, янв 16 2007, 19:00
Сообщения: 168
Откуда: город
Во внутреннем формате в f1, например, хранится '0000000012', а в f2 - '0000012', домены, разумеется, разные.
2 vga: так и делаю, но заинтересовал вопрос, возможно ли то же через join.

P.S. Система 4.6C


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, мар 02 2007, 13:11 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
У меня была ситуация, что по JOIN пытался объединить с(3) '001' и c(4) '0001'. Выборка была нулевая. Вероятно, если бы сравнивались значения '1 ' (2 пробела) и '1 ' (3 пробела), то join отработал бы.

Как правильно sibrin меня подправил, тут дело не сколько в названии доменов, а типе и длине данных, на которых они основаны.

А у тебя даже типы данных разные, поэтому думаю, в этом случае только через ABAP.


Последний раз редактировалось vga Пт, мар 02 2007, 13:15, всего редактировалось 1 раз.

Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, мар 02 2007, 13:15 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, янв 16 2007, 19:00
Сообщения: 168
Откуда: город
Спасибо, буду знать на будущее :)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, мар 09 2007, 14:52 
Специалист
Специалист

Зарегистрирован:
Чт, окт 26 2006, 16:44
Сообщения: 149
Откуда: Москва
Нет, так выбрать не получится. Думаю, что проблема как раз с количеством нулей. CONVERSION_EXIT_ALPHA_INPUT/OUTPUT должны помочь.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, мар 09 2007, 21:19 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
Интересно, как именно к связи в JOIN применить CONVERSION_EXIT_ALPHA_INPUT/OUTPUT?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, мар 10 2007, 13:36 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
vga написал(а):
Интересно, как именно к связи в JOIN применить CONVERSION_EXIT_ALPHA_INPUT/OUTPUT?

Никак - только на ABAPе внутренними таблицами оперировать...

_________________
С уважением, Сергей Королев


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 15 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB