SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

ошибка в запросе


Goto page 1, 2  Next
 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP
View previous topic :: View next topic  
Author Message
sergei64_89
Участник
Участник



Joined: 21 Jun 2011
Posts: 19

PostPosted: Mon Jun 27, 2011 12:48 pm    Post subject: ошибка в запросе Reply with quote

TABLES: zstudent , zstudent_predmet , zvedomost.
types: begin of vedomost_str,
name type c,
familii type c,
otchestvo type c,
mark type n,
end of vedomost_str.

vedomost type vedomost_str occurs 100 WITH HEADER LINE.

SELECT zstudent~name zstudent~familii zstudent~otchestvo zvedomost~mark
INTO TABLE vedomost FROM
zvedomost inner join zstudent on zvedomost~id_student = zstudent~id .
компилирует но при запуске выводит ошибку.что не так?
Back to top
View user's profile Send private message
Удав
Гуру
Гуру


Age: 48
Joined: 25 Jan 2008
Posts: 580
Location: Москва

PostPosted: Mon Jun 27, 2011 1:12 pm    Post subject: Reply with quote

Quote:
types: begin of vedomost_str,
name type c,
familii type c,
otchestvo type c,
mark type n,
end of vedomost_str.

А что, имя, фамилия и отчество должны иметь длину 1 символ? Question
Объявите эти поля со ссылкой на соответствующие поля таблиц zstudent и zvedomost.

_________________
С уважением,
Удав.
Back to top
View user's profile Send private message
sergei64_89
Участник
Участник



Joined: 21 Jun 2011
Posts: 19

PostPosted: Mon Jun 27, 2011 1:20 pm    Post subject: Reply with quote

спс.

SELECT zstudent~id zstudent~name zstudent~familii zstudent~otchestvo FROM zstudent
WHERE NOT EXISTS
( SELECT * FROM zvedomost WHERE zvedomost~id_student = zstudent~id HAVING
( COUNT( * ) = SELECT COUNT( * ) FROM ZSTUDENT_PREDMET WHERE zstudent_predmet~student = zstudent~id ) ).
endselect.
что тут ни так?вообще не компилируется
Back to top
View user's profile Send private message
Удав
Гуру
Гуру


Age: 48
Joined: 25 Jan 2008
Posts: 580
Location: Москва

PostPosted: Mon Jun 27, 2011 2:05 pm    Post subject: Reply with quote

sergei64_89 wrote:
что тут ни так?вообще не компилируется

А с чего этот SELECT компилиться должен? Confused
Нажмите F1 на операторе SELECT и изучите его синтаксис.

_________________
С уважением,
Удав.
Back to top
View user's profile Send private message
sergei64_89
Участник
Участник



Joined: 21 Jun 2011
Posts: 19

PostPosted: Mon Jun 27, 2011 2:39 pm    Post subject: Reply with quote

дык такой синтаксис ms sql понятен.
Back to top
View user's profile Send private message
Удав
Гуру
Гуру


Age: 48
Joined: 25 Jan 2008
Posts: 580
Location: Москва

PostPosted: Mon Jun 27, 2011 3:03 pm    Post subject: Reply with quote

R/3 - это не ms sql Laughing
Справку то почитали?

_________________
С уважением,
Удав.
Back to top
View user's profile Send private message
sergei64_89
Участник
Участник



Joined: 21 Jun 2011
Posts: 19

PostPosted: Mon Jun 27, 2011 3:26 pm    Post subject: Reply with quote

почиать почитал.
SELECT zstudent~id zstudent~name zstudent~familii zstudent~otchestvo FROM zstudent
INTO TABLE tempstudent WHERE NOT EXISTS
( SELECT count( * ) FROM zvedomost WHERE zvedomost~id_student = zstudent~id group by zvedomost~id_student
HAVING
COUNT( * ) = ( SELECT COUNT( * ) FROM ZSTUDENT_PREDMET
WHERE zstudent_predmet~student = zstudent~id group by zstudent_predmet~student ) ).
вот так заработало.
уныл этот abap
Back to top
View user's profile Send private message
Удав
Гуру
Гуру


Age: 48
Joined: 25 Jan 2008
Posts: 580
Location: Москва

PostPosted: Mon Jun 27, 2011 3:41 pm    Post subject: Reply with quote

Что значит "уныл"?
R/3 - для работы, а не для развлечений Exclamation
И вывод списка нерадивых студентов на ABAP будет выглядеть иначе Wink

_________________
С уважением,
Удав.
Back to top
View user's profile Send private message
sergei64_89
Участник
Участник



Joined: 21 Jun 2011
Posts: 19

PostPosted: Mon Jun 27, 2011 3:45 pm    Post subject: Re: ошибка в запросе Reply with quote

на c# было всё проще и веселей.и подходов для решений уйма.
но вот судьба привела сюда.....
Back to top
View user's profile Send private message
Удав
Гуру
Гуру


Age: 48
Joined: 25 Jan 2008
Posts: 580
Location: Москва

PostPosted: Mon Jun 27, 2011 3:55 pm    Post subject: Reply with quote

Тогда привыкай, что здесь 3-хуровневая архитектура, а не просто запросы к БД Wink
Code:

select a~student
into table it_student_id
from ztstudent_predmet as a
where not exists (select * from zvedomost as b
    where b~student = a~student
      and b~predmet = a~predmet ).

sort it_student_id.
delete ajacent duplicates from it_student_id.
check it_student_id[] is not initial.
select a~id a~name a~familii a~otchestvo
from zstudent as a
for all entries in it_student_id
where a~id = it_student_id-student.

Это самый простой вариант Wink

_________________
С уважением,
Удав.
Back to top
View user's profile Send private message
sergei64_89
Участник
Участник



Joined: 21 Jun 2011
Posts: 19

PostPosted: Mon Jun 27, 2011 4:00 pm    Post subject: Reply with quote

тоесть вы убрали агрегирующие функции.перенеся все расчёты на внутренние таблицы.для оптимизации быстродействия.
p.s. вторую неделю в sap
Back to top
View user's profile Send private message
Удав
Гуру
Гуру


Age: 48
Joined: 25 Jan 2008
Posts: 580
Location: Москва

PostPosted: Mon Jun 27, 2011 4:02 pm    Post subject: Reply with quote

Ну да.
Обычно сервер БД - один и его надо беречь от сложных запрсосв Smile

_________________
С уважением,
Удав.
Back to top
View user's profile Send private message
sergei64_89
Участник
Участник



Joined: 21 Jun 2011
Posts: 19

PostPosted: Mon Jun 27, 2011 4:08 pm    Post subject: Reply with quote

выводит студентов не сдевших все экзамены.
select a~student
into table it_student_id
from ztstudent_predmet as a
where not exists (select * from zvedomost as b
where b~student = a~student
and b~predmet = a~predmet ).

удаляет дубликаты и добавляет информацию о студенте.
sort it_student_id.
delete ajacent duplicates from it_student_id.
check it_student_id[] is not initial.
select a~id a~name a~familii a~otchestvo
from zstudent as a
for all entries in it_student_id
where a~id = it_student_id-student.[/code]
Это самый простой вариант Wink[/quote]
если я правильно понял,но мой запрос выводит всех студентов не сдавших хотя бы один экзамен положенный ему!
Back to top
View user's profile Send private message
Удав
Гуру
Гуру


Age: 48
Joined: 25 Jan 2008
Posts: 580
Location: Москва

PostPosted: Mon Jun 27, 2011 4:16 pm    Post subject: Reply with quote

[quote="sergei64_89]если я правильно понял,но мой запрос выводит всех студентов не сдавших хотя бы один экзамен положенный ему![/quote]
Мой код - тоже Smile
Только если потребуется подсчитать количество несданных экзаменов на каждого студента, мне дополнительный запрос к БД не нужен Wink

_________________
С уважением,
Удав.
Back to top
View user's profile Send private message
sergei64_89
Участник
Участник



Joined: 21 Jun 2011
Posts: 19

PostPosted: Mon Jun 27, 2011 4:25 pm    Post subject: Reply with quote

а можно вам писать на почту или ещё куда нибудь с вопросами.а то влпросов много форум грязнить не хочется
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP All times are GMT + 4 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG.
SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG.
Every effort is made to ensure content integrity. Use information on this site at your own risk.