Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> oddzielanie przecinkiem wartości pobranych z tabeli wg argumentu
Arthast
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 28.01.2005

Ostrzeżenie: (0%)
-----


Witam,

przysiadłem w końcu, aby na poważniej pouczyć się SQL'a i niestety za bardzo nie potrafię zrozumieć instancji jego działania - a manual jest strasznie nieczytelny (albo nie potrafię szukać - też taka możliwość może być);

Otóż mam taki problem, iż próbuje sobie napisać funkcję, która po podaniu id_filmu pobierze wszystkie do niego przypisane gatunki i wyświetli po przecinku

Model prezentuje się następująco:



A oto procedura, którą stworzyłem:
  1. DELIMITER $$
  2.  
  3. DROP FUNCTION IF EXISTS `dupa` $$
  4. CREATE DEFINER=`root`@`localhost` FUNCTION `dupa`(`idfilm` INT) RETURNS varchar(255) CHARSET latin1
  5. READS SQL DATA
  6. BEGIN
  7.  
  8.  
  9. DECLARE ile INT;
  10. DECLARE str VARCHAR(255);
  11. DECLARE zapytanie VARCHAR(255);
  12. DECLARE licznik INT;
  13. DECLARE licznik_dod INT;
  14.  
  15. SET licznik = 0;
  16. SET licznik_dod = 0;
  17.  
  18. SET ile = (SELECT count(*)
  19. FROM gatunki, film_gatunki
  20. WHERE film_gatunki.id_film = idfilm
  21. AND film_gatunki.id_gatunek = gatunki.id_gatunek);
  22.  
  23.  
  24.  
  25.  
  26. WHILE ile > licznik DO
  27.  
  28. SET licznik_dod = licznik_dod +1;
  29.  
  30. SET zapytanie = (SELECT gatunki.nazwa_gatunku INTO zapytanie
  31. FROM gatunki, film_gatunki
  32. WHERE film_gatunki.id_film =idfilm
  33. AND film_gatunki.id_gatunek = gatunki.id_gatunek
  34. LIMIT licznik,licznik_dod);
  35.  
  36.  
  37.  
  38. SET str = str & ', ' % zapytanie;
  39.  
  40. SET licznik = licznik + 1;
  41.  
  42. END WHILE;
  43.  
  44.  
  45.  
  46. RETURN str;
  47. END $$
  48.  
  49. DELIMITER ;


Procedurę wykonuje, tylko że wyrzuca NULL. Zmienna ile dostaje poprawna wartość.

Coś mi się wydaje, że zupełnie źle podchodzę do tego problemu.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 01:08