W bazie danych Access mam trzy tabele
1. Procesy
Kod
ID | Proces
--------------
1 | proc1
2 | proc2
3 | proc1.1
4 | proc3
5 | proc2.1
6 | proc1.2
7 | proc1.1.1
--------------
1 | proc1
2 | proc2
3 | proc1.1
4 | proc3
5 | proc2.1
6 | proc1.2
7 | proc1.1.1
2. Temp
Kod
ID | ProcID | FatherID
---------------------------
1 | 3 | 1
2 | 6 | 1
3 | 5 | 2
4 | 7 | 3
---------------------------
1 | 3 | 1
2 | 6 | 1
3 | 5 | 2
4 | 7 | 3
3.Docs
Kod
ID | DocName
----------------
1 | Doc1
2 | Doc2
3 | Doc3
4 | Doc4
5 | Doc5
6 | Doc6
7 | Doc7
8 | Doc8
9 | Doc9
----------------
1 | Doc1
2 | Doc2
3 | Doc3
4 | Doc4
5 | Doc5
6 | Doc6
7 | Doc7
8 | Doc8
9 | Doc9
Miedzy tabelami procesy i temp zachodzi zwiazek: proces, ktorego ID jest w ProcID nalezy do procesow, ktore ID sa w w FatherID.
Miedzy tabelami temp i docs: docs.ID = temp.ID
stad mozemy zbudowac drzewo:
Kod
proc1
proc1.1
proc1.1.1
proc1.2
proc2
proc2.1
proc3
proc1.1
proc1.1.1
proc1.2
proc2
proc2.1
proc3
Ale np proc1.1.1 moze znajdowac sie w calkiem innym miejscu w drzewie albo wystapic w nim kilka razy w innych miejscach, wiec w kazdym przypadku ma inna sciezke .
Moje pytanie:
Jak skonstruowac polecenie SELECT np jezeli chcemy sie dowiedziec czy procesowi proc1.1.1 jest przypisany jakis dokument z uwzglednieniem ze ten proces ma unikatowa sciezke.
Samo polecenie SELECT dla proc1.1.1 wyglada tak:
SELECT Procesy.Proces, Docs.DocName FROM (Procesy INNER JOIN Temp ON Procesy.ID = Temp.ProcID) INNER JOIN Docs ON Temp.ID = Docs.ID WHERE (((Proces.Procesy)="proc1.1.1"));
ale jak uwzglednic, ze sciezka ojcow (fatherID) to w tym przypadku : dla ProcID = 7 FatherID = 3 -> dla ProcID = 3 FatherID = 1 ?
Dodam ze pracuje w Excelu, korzystam z metody ADO i dla wybranego procesu potrafie uzyskac sciezke ProcID -> FatherID (czyli liczba przejsc w gore bedzie znana)
Chyba stworzylem temat w zlym dziale, prosze moderatora o przerzucenie do dzialu baz danych , pozdrawiam