View previous topic :: View next topic |
Author |
Message |
sergei64_89 Участник
Joined: 21 Jun 2011 Posts: 19
|
Posted: Mon Jun 27, 2011 12:48 pm Post subject: ошибка в запросе |
|
|
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 |
|
|
Удав Гуру
Age: 48 Joined: 25 Jan 2008 Posts: 580 Location: Москва
|
Posted: Mon Jun 27, 2011 1:12 pm Post subject: |
|
|
Quote: | types: begin of vedomost_str,
name type c,
familii type c,
otchestvo type c,
mark type n,
end of vedomost_str. |
А что, имя, фамилия и отчество должны иметь длину 1 символ?
Объявите эти поля со ссылкой на соответствующие поля таблиц zstudent и zvedomost. _________________ С уважением,
Удав. |
|
Back to top |
|
|
sergei64_89 Участник
Joined: 21 Jun 2011 Posts: 19
|
Posted: Mon Jun 27, 2011 1:20 pm Post subject: |
|
|
спс.
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 |
|
|
Удав Гуру
Age: 48 Joined: 25 Jan 2008 Posts: 580 Location: Москва
|
Posted: Mon Jun 27, 2011 2:05 pm Post subject: |
|
|
sergei64_89 wrote: | что тут ни так?вообще не компилируется |
А с чего этот SELECT компилиться должен?
Нажмите F1 на операторе SELECT и изучите его синтаксис. _________________ С уважением,
Удав. |
|
Back to top |
|
|
sergei64_89 Участник
Joined: 21 Jun 2011 Posts: 19
|
Posted: Mon Jun 27, 2011 2:39 pm Post subject: |
|
|
дык такой синтаксис ms sql понятен. |
|
Back to top |
|
|
Удав Гуру
Age: 48 Joined: 25 Jan 2008 Posts: 580 Location: Москва
|
Posted: Mon Jun 27, 2011 3:03 pm Post subject: |
|
|
R/3 - это не ms sql
Справку то почитали? _________________ С уважением,
Удав. |
|
Back to top |
|
|
sergei64_89 Участник
Joined: 21 Jun 2011 Posts: 19
|
Posted: Mon Jun 27, 2011 3:26 pm Post subject: |
|
|
почиать почитал.
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 |
|
|
Удав Гуру
Age: 48 Joined: 25 Jan 2008 Posts: 580 Location: Москва
|
Posted: Mon Jun 27, 2011 3:41 pm Post subject: |
|
|
Что значит "уныл"?
R/3 - для работы, а не для развлечений
И вывод списка нерадивых студентов на ABAP будет выглядеть иначе _________________ С уважением,
Удав. |
|
Back to top |
|
|
sergei64_89 Участник
Joined: 21 Jun 2011 Posts: 19
|
Posted: Mon Jun 27, 2011 3:45 pm Post subject: Re: ошибка в запросе |
|
|
на c# было всё проще и веселей.и подходов для решений уйма.
но вот судьба привела сюда..... |
|
Back to top |
|
|
Удав Гуру
Age: 48 Joined: 25 Jan 2008 Posts: 580 Location: Москва
|
Posted: Mon Jun 27, 2011 3:55 pm Post subject: |
|
|
Тогда привыкай, что здесь 3-хуровневая архитектура, а не просто запросы к БД
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. |
Это самый простой вариант _________________ С уважением,
Удав. |
|
Back to top |
|
|
sergei64_89 Участник
Joined: 21 Jun 2011 Posts: 19
|
Posted: Mon Jun 27, 2011 4:00 pm Post subject: |
|
|
тоесть вы убрали агрегирующие функции.перенеся все расчёты на внутренние таблицы.для оптимизации быстродействия.
p.s. вторую неделю в sap |
|
Back to top |
|
|
Удав Гуру
Age: 48 Joined: 25 Jan 2008 Posts: 580 Location: Москва
|
Posted: Mon Jun 27, 2011 4:02 pm Post subject: |
|
|
Ну да.
Обычно сервер БД - один и его надо беречь от сложных запрсосв _________________ С уважением,
Удав. |
|
Back to top |
|
|
sergei64_89 Участник
Joined: 21 Jun 2011 Posts: 19
|
Posted: Mon Jun 27, 2011 4:08 pm Post subject: |
|
|
выводит студентов не сдевших все экзамены.
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]
Это самый простой вариант [/quote]
если я правильно понял,но мой запрос выводит всех студентов не сдавших хотя бы один экзамен положенный ему! |
|
Back to top |
|
|
Удав Гуру
Age: 48 Joined: 25 Jan 2008 Posts: 580 Location: Москва
|
Posted: Mon Jun 27, 2011 4:16 pm Post subject: |
|
|
[quote="sergei64_89]если я правильно понял,но мой запрос выводит всех студентов не сдавших хотя бы один экзамен положенный ему![/quote]
Мой код - тоже
Только если потребуется подсчитать количество несданных экзаменов на каждого студента, мне дополнительный запрос к БД не нужен _________________ С уважением,
Удав. |
|
Back to top |
|
|
sergei64_89 Участник
Joined: 21 Jun 2011 Posts: 19
|
Posted: Mon Jun 27, 2011 4:25 pm Post subject: |
|
|
а можно вам писать на почту или ещё куда нибудь с вопросами.а то влпросов много форум грязнить не хочется |
|
Back to top |
|
|
|