Witam,
potrzebuję pomocy, bo nagle obudziłem się z ręką w nocniku.
Mam 4 tabele:
user - id, imie, nazwisko, rok, grupa
user_info - id, userid, typ, tresc
przedmiot - id, tresc
slownik - id, nazwa_przedmiotu, rok, grupa, id_przedmiotu
na podstawie ich kombinacji muszę uzupełnić czwarta zależnie od zawartych w niej wariantów.
wynik - id, id_przedmiotu, id_osoby
Tabela user zawiera proste dane. W user_info znajdują się dodatkowe pola dla usera, jak rok szkolenia i grupa oraz nazwa szkolenia
Tabela przedmiot zawiera id przedmiotu i jego nazwę.
Tabela slownik zawiera opis co powinno gdzie wpaść.
Potrzebuję procedury, która przeanalizuje, na którym roku i w której grupie użytkownik się znajduje (user, user_info), a następnie w oparciu o tabelę slownik uzupełni (INSERT lub UPDATE) tabelę wynik.
Czy zechciałoby się komuś pomóc w tej sprawie? :) Ojciec chorego dziecka prosi o pomoc :)
tak na szybko to masz 5 tabel :)
nie wprowadzaj czytelników w błąd ;)
co to jest typ w user_info? bo jak tak popatrzeć na te tabele to user_info jest do niczego nie potrzebna
i coś lewizna z tą tabelą wynik ...
niby na jakiej podstawie tam ma być UPDATE ?
nie wiem czy takie coś działa w MySQL, ale w Oracle ... ;)
FOR i IN (SELECT p.Id pid, u.Id uid
FROM Slownik s, USER u, Przedmiot p
WHERE s.Is_Przedmiotu = p.Id
AND s.Rok = u.Rok
AND s.Grupa = u.Grupa) LOOP
INSERT INTO wynik (id_przedmiotu, id_osoby) VALUES (i.pi, i.uid);
END LOOP;
pod warunkiem, że id w tabeli WYNIK jest oparte na jakiejś sekwencji
niunia ==> Nie czepiaj się :)
User_info składuje informacje o roku, grupie
Generalnie muszę każdego wziąć użytkownika z user, sprawdzić co ma wpisane w typ. Jeżeli rok 2012 i rok I, to sprawdzam w słowniku ID przemiotów, gdzie mam 2012 i I.
Następnie dla tej osoby generuję INSERT lub UPDATE do wyniku podając id_przedmiotu z user i ID przedmiotu ze słownika
Teraz może prościej :)
Do obróbki na około 15 tys rekordów (userów), gdzie przedmioty dla danego rocznika w danym roku występują w ilości około 10.
gruszek, ale podałeś na samej górze, że info o roku i grupie masz w tabeli user
a w tabeli wynik masz id_przedmiotu i id_usera - na moje oko tam jest tylko insert, bo nie wiem co i jak można zupdatować
Popełniłem błąd z danymi na płasko w user (nie ma tam danych usera jednak), wszystko mam w user_info.
Niunia ==> Użytkownik jest na jakimś roku (user + user_info), mam do tego słownik przedmiotów (przedmiot) oraz tabelę zestawienia przedmiotu do rocznika i grupy (slownik)
Za pomocą tego muszę wygenerować rozpiskę zajęć użytkownika podając te dane do tabeli wynik.
Mam nadzieję, że teraz bardziej nie zakręciłem :)
no to zakładając, że na tabeli WYNIK masz jakąś sekwencję ustalającą ID, można to zrobić jednym insertem:
INSERT INTO Wynik (Id_Przedmiotu, Id_Osoby)
SELECT P.Id, U.Id
FROM User U, User_Info UI, Slownik S, Przedmiot P
WHERE U.Id = UI.User_Id
AND S.Id_Przedmiotu = P.Id
AND UI.Rok = S.Rok -- zakładam, że info o roku i grupie masz w user_info
AND UI.Grupa = S.Grupa;