![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 30.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam
![]() ![]() Proszę bardzo o pomoc w następującym problemie ![]() Otóż mam trzy tabele:Pracownik, Kierownik, GrPracownikow ![]() Typy sprzężeń są wszędzie typu 1 czyli "Zawiera tylko te wiersze w których sprzężone pola w obu tabelach są równe" 1) W tabeli Pracownik wybieram za pomocą pola kombi ID_kierownik jednego z kierowników tabeli Kierownik. 2) Chciałbym w drugim kroku aby następne pole kombi wybierło tylko te ID_GrPrac (ID grupy pracowników) z tabeli GrPracownikow, które w polu ID_kierownik mają taką samą wartość jak pole ID_kierownik w aktualnie uzupełnianym rekordzie (danych pracownika) tabeli Praco nik Sama hierarchia między tabelami jest OK (tak jak chciałem) czyli Pod osobę KIEROWNIK podlegają GrPracownikow na które składa się lista pewnych PRACOWNIKÓW Poniżej rysunki ![]() ![]() BARDZO PROSZĘ O POMOC GDYŻ ŚCIERAM SIĘ Z TYM JUŻ MIESIĄC a niedługo musze oddać gotową bazę na studiach i brak możliwości automatycznego segregowania możl wych do wybrania GrupPracowników w zależności od wybranego już Kierownika będzie kos towało mnie minimalnie jeden stopień mimo mojej ciężkiej pracy :/ Jeśli ktoś mi pomoże kilka razy to napewno postaram się jakoś odwdzięczyć Dodam jeszcze że : Wykonałem już tyle kombinacji, że już nie wiem czy zrobiłem błąd w typach sprzężeń między tabelami czy poprostu nieumiejętnie tworzę zapytanie wybierające dane ![]() Np. Zapytanie SELECT GrPracownikow.ID_GrPrac FROM GrPracownikow RIGHT JOIN Pracownik ON GrPracownikow.ID_Kierownik = Pracownik.ID_Kierownik; Wypisuje mi taki wynik : 1 3 2 4 5 6 Zatem ustawia elegancko kolejno GrupyPracowników według przypisanych im ID_Kierownik'a GrPracownikow 1 i 3 należą do kierownika o ID=1 GrPracownikow 2 i 4 należą do kierownika o ID=2 GrPracownikow 5 i 6 należą do kierownika o ID=3 Ale wynikiem jaki potrzebuję jest jest np 1 i 3 do wyboru w polu kombi komórki GrPracownikow jeśli w polu ID_kierownik jest warość 1 Na podstawie doświadczeń widze że poprostu moja funkcja SELECT wybiera wszystkie kolejne rekordy Pracownik.ID_kierownik i wybiera wszystkie odpowiadające im rekordy GrPracownikow.ID_GrPracownikow Dowodzą tego dwa poniższe zrzuty ekranów dla tych samych pracowników przyporządkowanych 1) kolejno wszystkich do kierownika z ID_kierownika=1 ![]() 2) kolejno Pracownik o ID_pracownik=1 do Kierownika o ID_kierownika=1 Pracownik o ID_pracownik=2 do Kierownika o ID_kierownika=2 Pracownik o ID_pracownik=3 do Kierownika o ID_kierownika=3 ![]() Chciałbym jednak żeby funkcja SELECT użyta w polu kombi komórki Pracownik.ID_GrPracownikow wybierała tylko te ID_GrPracownikow z tabeli GrPracownikow które odpowiadają przypisanemu ID_kierownik do pojedynczego pracownika z tabeli Pracownik. OGÓLNIE PYTANIE BRZMIAŁOBY TAK : Jak skonstruować zapytanie SELECT które wybiera wiele rekordów z tab2 odpowiadaj cych pojedynczemu rekordowi z tab1 ![]() PROSZE O POMOC |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 65 Pomógł: 0 Dołączył: 1.12.2006 Skąd: Łowicz Ostrzeżenie: (0%) ![]() ![]() |
Witam
Dobrze, że zamieściłeś schemat powiązań między tabelami. Błędny niestety. Tabelę "Kierownik" powiązałeś relacją jeden-do-wielu z tabelą "GrPracowników" oraz relacją wiele-do-wielu poprzez tabelę "Pracownik"!!! Postarajmy ustalić jakie są założenia semantyczne projektowanej bazy danych: 1. Wnioski z Twojego projektu: - Pracownik ma jednego kierownika - Pracownik należy do jednej grupy - Kierownik przynależy do wielu grup Trzymając się tego zlikwiduj połączenie między tabelą "Kierownik" a "GrPracowników". Spróbuj teraz zaprojektować kwerendę. Jeżeli nie będzie działać pytaj. (Tylko trochę prościej ![]() ![]() Pozdrawiam |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 17:00 |