Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z podzapytaniami
Forum PHP.pl > Forum > Bazy danych > Microsoft SQL Server / MSDE
avelornvelbazyl
Prosił bym was o pomoc w rozwiązaniu problemu dotyczącego zwracania przez pod zapytanie więcej niż jednej wartości.

Postaram się Wam to wytłumaczyć na przykładzie kodu mojej funkcji :


  1. CREATE FUNCTION czlonek_projekty_id(@id int)
  2.  
  3. returns @TABLE TABLE
  4.  
  5. (c_id int,c_nazwisko varchar(30),c_imie varchar(20),
  6.  
  7. c_status varchar(20),c_region varchar(20),p_id int,
  8.  
  9. p_nazwa varchar(50),p_rok int, p_status varchar(12),
  10.  
  11. funk varchar(20))
  12.  
  13. AS begin declare @pid TABLE
  14.  
  15. (id int)
  16.  
  17. INSERT @pid SELECT t_p_id FROM team WHERE (t_marketing=@id OR t_pr=@id OR t_koordynator=@id OR t_efar=@id OR t_inne1=@id OR t_inne2=@id)
  18.  
  19. INSERT @TABLE SELECT 'id czlonka'=c.c_id,'nazwisko'=c.c_nazwisko,'imie'=c.c_imie,
  20.  
  21. 'status w organizacji'=c.c_status,'region'=c.c_region,'id projektu'=t.t_p_id,
  22.  
  23. 'nazwa projektu'=p.p_nazwa,'rok'=p.p_rok,'status projektu'=p.p_status
  24.  
  25. ,'funkcja w zespole'=dbo.funkcja_team(t.t_p_id,@id)
  26.  
  27. FROM czlonkowie c,team t,(SELECT p_nazwa,p_rok,p_status FROM projekty WHERE p_id=(SELECT id FROM @pid))p WHERE c_id=@id AND t_p_id=(SELECT id FROM @pid )
  28.  
  29. RETURN
  30.  
  31. end
  32.  
  33. go


w tabeli @pid znajdują się identyfikatory t_p_id = p_id znalezione automatycznie w tabeli team.

Funkcja ma za zadanie wypisać z 3 tabel pola, dla których wartości z tabeli @pid oraz wartość @id się zgadzają , funkcja działa prawidłowo dopóki w tabeli @pid jest jedna wart. Jeżeli jest więcej przy wykonywaniu otrzymuje następujący komunikat :
Msg 512, Level 16, State 1, Line 1

Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.

funkcja_team() nie jest źródłem błędu !

Z góry dzięki za pomoc
SongoQ
A nie powinno byc zamiast = IN ?
avelornvelbazyl
Wielkie dzieki za pomoc exclamation.gif!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.