access połączenie kolumn z wierszami z różnych tabel

0

witam!
może i temat nie do końca mówi co chcę zrobić ale nie umiem tego inaczej opisać. mam dwie tabele jedna z personelem (imię nazwisko itd.), drugą z dokumentami (nazwa, dotyczy, załącznik) i tu zaczynają się schody - jak zrobić przycisk "zapoznałem się", dokumenty dokładane są przez użytkowników (wiec najwygodniej jest kiedy każdy dokument to nowy wiersz) oraz liczba użytkowników się zmienia (więc również są w wierszach), wyobrażał bym to sobie tak: formularz z nazwiskami jako wiersze a z nazwami dokumentów jako kolumną (pole tak/nie domyślnie nie) czy ktos ma pomysł jak z tego wybrnąć bo mam wrażenie że rozwiązanie jest proste tylko zafix'owałem się na zły kierunek? schemat w załączniku:schemat.jpg

0

Nie ma co cudować. Po prostu potrzebujesz trzeciej tabeli.

id personelu, id dokumentu, wynik

Poczytaj o joinach

0

nie do końca rozumiem, tworząc trzecią tabelę będe miał nadal wszystko jako kolumny, wiec ieżeli dobrze rozumiem to robiąc full outer join będę miał ilość wierszy równą ilość personel X ilość dokumentów, dobrze to rozumiem?

0

Będziesz miał liczbę osób * liczbę dokumentów. I po co chcesz robić fullouter join? :|

0
Hubert Hendaleko napisał(a):

witam!
może i temat nie do końca mówi co chcę zrobić ale nie umiem tego inaczej opisać.

Witaj, od rozu powiem, żę nie do końca rozumiem, bo przydałby się dokładniejszy opis jak to działa biznesowo, więc odniosę się tylko do tego co opisałeś

mam dwie tabele jedna z personelem (imię nazwisko itd.), drugą z dokumentami (nazwa, dotyczy, załącznik) i tu zaczynają się schody - j

OK, mamy 2 tabele.

ak zrobić przycisk "zapoznałem się",

Co finalnie ma to oznaczać? Chcesz trzymać w bazie informację, że ktoś się zapoznał z danym wierszem z tabeli dokumenty?

dokumenty dokładane są przez użytkowników (wiec najwygodniej jest kiedy każdy dokument to nowy wiersz)

OK. Do tabeli Dokumenty "dokładane" są nowe wiersze i faktycznie każdy dokuemnt to nowy wiersz. Tutaj jeszcze wspomniasz o użytkowniku. To jest kolejna tabela? czy może
masz na myśli to, że użytkownik to wiersz z tabeli personel?
Możliwe że potrzebna jest również czwarta tabela - to się wyjaśni na końcu postu.

oraz liczba użytkowników się zmienia (więc również są w wierszach),

Co to znaczy że się zmienia? Masz na myśli, że przychodzą nowi użytkownicy? czy masz na myśli 10 użytkowników, ale niektóre z dokumentów potzrebują aby zapoznało się z nimi tylko 5?
Czy każdy dokument musi być zapoznany przez wszystkich 10?

wyobrażał bym to sobie tak: formularz z nazwiskami jako wiersze a z nazwami dokumentów jako kolumną (pole tak/nie domyślnie nie) czy ktos ma pomysł jak z tego wybrnąć bo mam wrażenie że rozwiązanie jest proste tylko zafix'owałem się na zły kierunek? schemat w załączniku:

Niewiele znam szczegółów więc tutaj strzelam.
Jak wspomniał @ledi12 potrezbujesz trzeciej tabeli (i ok, możesz wprowadzać dane do niej z formularza, ewentualnie podformularza na formaularzu - to już kwestia estetyki i oszczędnści czasu) wyglądało by to mniej więcej tak

w formularzu wybierasz kwerendą nazwisko użytkownika, po tej operacji podformularz się aktualizuje

w podformularzu wyświetlasze to co kwerenda zbiera dane z tabeli dokumenty, dodaje dane z tabeli personel (tylko tu też pytanie czy każdy dokument ma być mnożony przez wszystkie wiersze personelu? pewnie nie. do tego możesz dołożyć checkboxa (zapoznał się/nie zapoznał) i oczywiście przydałby się filtr, bo zakładam, że chcesz wyświelić użytkownikowi chyba tylko to z czym się nie zapoznał? żeby nie musiał widzieć historii sprzeda 3 miesiecy i nie siedział pół dnia na przwijaniu? (ewentualnie potrzebna byłaby czwarta tabela)

Ewentualnie, możezs wyświetlić użytkownikowi od razu tylko dokumenty i checkbox. Nazwę użytkownika weźmiesz z systemu czy loginu do bazy (użytkownik nawet nie musi jej widzieć)
(i tu wtedy czwartej tabeli teoretycznie możesz nie potrzebować...- ale to nie jest dobre rozwiązanie)

W obu przypadkach na formularzy będziesz miał listę wierszy z dokumentami, pole zapoznał, i nazwę użytkownika - i tutaj już prosta sprawa - dane dodajesz lub aktualizujesz w tej
trzeciej tabeli, gdzie masz info kto z czym się zapoznał.

0
Hubert Hendaleko napisał(a):

nie do końca rozumiem, tworząc trzecią tabelę będe miał nadal wszystko jako kolumny, wiec ieżeli dobrze rozumiem to robiąc full outer join będę miał ilość wierszy równą ilość personel X ilość dokumentów, dobrze to rozumiem?

tutaj chodzi generalnie o to, że trzecia tabela jest konieczna - a nie jest teraz istotne jak sobie wyobrażasz prezentację danych na formularzu.
Z uwagi na to, że to baza danych, zaprojektowana tabela co do zasady ma określoną liczbę kolumn (to robimy na etapie projektowania) - jak oddajesz bazę danych, to generalnie rolą użytkownika jest dodanie nowego wiersza a nie modyfikowanie tabel.

I powtarzam - nie ma to związku z tym co będzie finalnie na formularzu - tam możesz wiersze wyświetlac jako kolumny i odwrotnie - to już kwestia wyobraźni i wielkości ekranu.

0

Co finalnie ma to oznaczać? Chcesz trzymać w bazie informację, że ktoś się zapoznał z danym wierszem z tabeli dokumenty?

Dokładnie tak.

OK. Do tabeli Dokumenty "dokładane" są nowe wiersze i faktycznie każdy dokuemnt to nowy wiersz. Tutaj jeszcze wspomniasz o użytkowniku. To jest kolejna tabela? czy może
masz na myśli to, że użytkownik to wiersz z tabeli personel?
Możliwe że potrzebna jest również czwarta tabela - to się wyjaśni na końcu postu.

Wiersz z tabeli personel, ale personel dość często się zmienia.

Co to znaczy że się zmienia? Masz na myśli, że przychodzą nowi użytkownicy? czy masz na myśli 10 użytkowników, ale niektóre z dokumentów potzrebują aby zapoznało się z nimi tylko 5?
Czy każdy dokument musi być zapoznany przez wszystkich 10?

Tak przychodzą nowi użytkownicy (opcja kopiuj wklej odpada). Każdy zapoznaje się z każdym dokumentem.

chciałbym żeby widoczne były wszystkie dokumenty, ale to już kwestie front-endowe i wyświetlania danych - to nie problem. Problemem są tryby tej machiny.
I nadal jestem w kropce, jakoś nie widzę rozwiązania, i wiem że jest ono banalnie proste, ale jakoś się zablokowałem. Stworzyłem cos takiego, i nie wiem czy w tabeli doccheck już na ten moment powinny być wszystkie rekordy? Jak to połączyć w kupę? Kiedy tworzę kwerendę z trzech tabel mam błąd sprzężenia zwrotnego nie wiem dlaczego ;/, czy jest ktoś w stanie wytłumaczyć mi lukę w moim rozumowaniu? Tak wygląda moje zapytanie:
SELECT DOKUMENTY.Identyfikator, personel.Identyfikator, DOCCHECK.[ID DOKUMENTU], DOCCHECK.[ID PERSONELU], DOCCHECK.ZAPOZNANIE
FROM personel LEFT JOIN (DOKUMENTY LEFT JOIN DOCCHECK ON DOKUMENTY.Identyfikator = DOCCHECK.[ID DOKUMENTU]) ON personel.Identyfikator = DOCCHECK.[ID PERSONELU];

https://drive.google.com/file/d/1_Ecy7DmF5-xWFKcRy_V3SCbvLU3ui7-A/view?usp=sharing

1 użytkowników online, w tym zalogowanych: 0, gości: 1