Текущее время: Пт, авг 01 2025, 14:00

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: SELECT
СообщениеДобавлено: Чт, июн 11 2009, 19:30 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, мар 03 2009, 12:33
Сообщения: 141
всем привет!

задача наверняка простая и тривиальная.. проверить есть ли данные в таблице :gigi:

Таблица имеет примерно такие значения:
ку1 774357153436
ку5 6439010123401

Типа чтобы проверить, есть ли И первая И вторая строчка в таблице я делаю так:
Code:
  SELECT SINGLE * FROM таблица INTO таблица_wa WHERE
    столбец1 eq 'ку1' AND столбец2 eq '774357153436'.
  IF sy-subrc eq 0.
    SELECT SINGLE * FROM таблица INTO таблица_wa WHERE
      столбец1 eq 'ку5' AND столбец2 eq '6439010123401'.
и тут всяческие анализы..


уверен, что есть конструкция гораздо нагляднее!!! может вложенные селекты? у мну не получилось сделать :(


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: SELECT
СообщениеДобавлено: Чт, июн 11 2009, 22:00 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, авг 22 2005, 14:50
Сообщения: 1285
Откуда: с работы
Пол: Женский
ну и нормально, чего вы в самом деле хотите ещё-то?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SELECT
СообщениеДобавлено: Чт, июн 11 2009, 23:17 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, мар 03 2009, 12:33
Сообщения: 141
то как тут написано имхо очень некрасиво..
Galka, стремлюсь к прекрасному :wink: красоты хочу :D


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: SELECT
СообщениеДобавлено: Пт, июн 12 2009, 09:03 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Чт, окт 26 2006, 15:07
Сообщения: 227
Попробуйте вот эту красоту
Code:
SELECT DISTINCT column1 column2
  FROM table1
  INTO TABLE gt_table1
   WHERE ( column1 EQ 'ku1' AND column2 EQ '774357153436'  )
      OR ( column1 EQ 'ku5' AND column2 EQ '6439010123401' ).
IF sy-dbcnt EQ 2.
обработка ....


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SELECT
СообщениеДобавлено: Пт, июн 12 2009, 19:14 
Президент
Президент

Зарегистрирован:
Пт, апр 28 2006, 22:39
Сообщения: 2514
Откуда: North Taxolina, USA
Пол: Женский
А если EQ заменить на знак "равно" (=), то красота просто неземная будет, да еще и короче! :)

_________________
"One of the symptoms of an approaching nervous breakdown is the belief that one's work is terribly important." Bertrand Russell


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SELECT
СообщениеДобавлено: Пт, июн 12 2009, 20:34 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, мар 03 2009, 12:33
Сообщения: 141
Спасибо, matel!
Jelena, очень важное замечание!!! :D


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: SELECT
СообщениеДобавлено: Вс, июн 14 2009, 11:05 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, авг 22 2005, 14:50
Сообщения: 1285
Откуда: с работы
Пол: Женский
matel написал(а):
Попробуйте вот эту красоту
Code:
   WHERE ( column1 EQ 'ku1' AND column2 EQ '774357153436'  )
      OR ( column1 EQ 'ku5' AND column2 EQ '6439010123401' ).
IF sy-dbcnt EQ 2.
обработка ....

ага, а что если в таблице 2 строки "ку1 774357153436", тогда 2 не будет означать что есть обе искомые строки, а лишь что нашло 2 строки удовлетворяющие условию. Опять же, если 2 строки ку1 и 5 строк ку5 - даст вам 7, опять облом.
Красота не должна идти в ущерб точности и практичности. Код должен быть читаем и понятен.
Хорошо, если ваши поля ключевые, если нет дублей, если можно удалить выбранные дубли не в ущерб остальным полям, которые вы не сравниваете.... Слишком много если


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SELECT
СообщениеДобавлено: Вс, июн 14 2009, 11:17 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, июн 01 2005, 09:40
Сообщения: 536
Откуда: Belgorod
Пол: Мужской
тут вместо OR надо поставить AND :D

_________________
Новый этап на проекте - устранение доработок :).


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SELECT
СообщениеДобавлено: Вс, июн 14 2009, 20:05 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, мар 03 2009, 12:33
Сообщения: 141
Да все нормально, Galka :!: Человек же не давал готовое решение. Это просто один из вариантов, который можно применить при определенных условиях :wink:


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: SELECT
СообщениеДобавлено: Пн, июн 15 2009, 10:44 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, май 17 2006, 10:11
Сообщения: 52
Откуда: Москва
Пол: Мужской
А ещё можно подзапрос сделать:
Code:
SELECT SINGLE * FROM таблица INTO таблица_wa WHERE
    столбец1 eq 'ку1' AND столбец2 eq '774357153436' AND
    EXISTS ( SELECT * FROM таблица WHERE столбец1 eq 'ку5' AND столбец2 eq '6439010123401' ).


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SELECT
СообщениеДобавлено: Пн, июн 15 2009, 11:15 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
Брат Мигель написал:
тут вместо OR надо поставить AND :D

это чтобы гарантировано получить отрицательный результат и не париться ? :)

_________________
Я слышу и забываю,
Я вижу и помню долго,
Я делаю и — понимаю.


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

Зарегистрирован:
Чт, окт 26 2006, 15:07
Сообщения: 227
Galka написала:
ага, а что если в таблице 2 строки "ку1 774357153436", тогда 2 не будет означать что есть обе искомые строки, а лишь что нашло 2 строки удовлетворяющие условию. Опять же, если 2 строки ку1 и 5 строк ку5 - даст вам 7, опять облом.

Именно для этого в коде присутствует слово DISTINCT. Проверьте, если на слово не верите.


Последний раз редактировалось matel Пн, июн 15 2009, 13:12, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SELECT
СообщениеДобавлено: Пн, июн 15 2009, 13:06 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Вообще правильный вариант примерно такой. Это чисто ключ к решению, а не само оно :)
Code:
  SELECT COUNT(*) FROM ( bkpf AS tab1 JOIN
                         bkpf AS tab2 ON
                         tab1~mandt EQ tab2~mandt AND
                         tab1~bukrs EQ tab2~bukrs     )
                 WHERE tab1~belnr EQ 'что-то' AND
                       tab2~belnr EQ 'что-то'.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: SELECT
СообщениеДобавлено: Пн, июн 15 2009, 13:11 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, мар 03 2009, 12:33
Сообщения: 141
Ну всем спасибо за активность!!! Просветили таки мну по селектам :idea:


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: SELECT
СообщениеДобавлено: Пн, июн 15 2009, 14:32 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Вт, май 30 2006, 08:34
Сообщения: 1900
Цитата:
уверен, что есть конструкция гораздо нагляднее!!!

Первоначальный вариант мне кажется самым наглядным и что важно - самым простым.
И думается мне - самым быстродействующим.

_________________
С уважением.


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.

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


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

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


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

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