Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: PL/SQL - trudne początki
Forum PHP.pl > Forum > Bazy danych > Oracle
PHP_Addicted
Witam,

Miałbym prośbę o nakierowanie (ale nie gotowe rozwiązanie, bo tak się nie da nauczyć smile.gif ) jak rowzwiązać następujące problemy w PL/SQL.

Problem pierwszy:

mamy pewną tabelę, dajmy na to "piłka" o następujących kolumnach:
  1. (
  2. numer_pilki number(3) PRIMARY KEY,
  3. rozmiar_piłki VARCHAR(10) CHECK(rozmiar_piłki = "mala" OR rozmiar_piłki="duza"),
  4. numer_pojemnika NUMBER(2)
  5. );


I zasada wygląda następująco, że numer pilki jest przydzielany przy wkładaniu jej do pojemnika. Tu sobie poradziłem triggerem i sekwencją. Natomiast problem mam z drugim wymaganiem. Mamy n pojemników i wkładamy piłki do kolejnych pojemników. Przy czym każdy pojemnik może pomieścić 1 piłkę dużą i 2 małe. Gdy w danym pudełku (np. n) dajmy na to jest juz duża piłka to jest ona wkładana automatycznie do następnego pojemnika (n+1). Zastanawiam się, czy to jakąś pętlą rozwiązać? Nie rozumiem działania pętli w PL/SQL...

Problem drugi:

mamy tabelę z samo złączeniem np.
  1. ludzie
  2. (
  3. imie VARCHAR(20) PRMIMARY KEY,
  4. imie_matki VARCHAR(20) REFERENCES ludzie,
  5. imie_ojca VARCHAR(20) REFERENCES ludzie,
  6. zarobki NUMBER(6)
  7. )


I teraz potrzebuję policzyć sumę zarobków danej osoby wraz z jej dziećmi i wnukami. Udało mi się rozwiązać to dla osoby + jej dzieci. Natomiast nie wiem jak pobrac informacje o wnukach? Czy trzeba użyć tablic? Tabeli tymczasowej?


Będę bardzo wdzięczny za okazaną pomoc.
Method
Hej,

Problem 1.

Skoro dla zadanego pojemnika znamy ograniczenia Jedna piłka duza + Dwie małe to możesz je przeciez policzyć
Select count() dla duzej piłki z danego pojemnika + select count() dla malych pilek z tego samego pojemnika. Oczywiście można to zrobić bardziej lub mniej ładnie, skupmy sie jednak na problemie a nie na optymalizacji.

I teraz nie zostaje nam nic innego niz wkladanie piłek do pojemnika.
Skoro wiemy ile jest duzych piłek w pojemniku i wiemy ile jest malych parę IF'ów wystarczy do sterowania gdzie wkladamy nowa pilke (dużą lub mała).

Problem 2
Można użyć rekurencji, pętli, tablic tymczasowych rozwiązań jest mnóstwo.
  1. [/xml][xml]
wiiir
Problem 1 - ale bardzo rozumiem ale moze uzyj skladni MERGE
Problem 2 - uzyj connect by prior
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.