Текущее время: Вс, июл 20 2025, 14:32

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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