| 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: 49 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: 49 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: 49 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: 49 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: 49 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: 49 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: 49 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 | 
		 | 
	
	 
		  | 
	
			 
		 |