Текущее время: Чт, июл 31 2025, 17:18

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


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

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


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

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