skonstruowanie zapytania

0

Witam, stworzyłem ćwiczeniową bazę danych obsługującą Przychodnię. Diagram bazy wygląda następująco:

Chciałbym w jednej tabeli** __zestawić __**Imiona, Nazwiska Pacjentów którzy mieli wizyty a także Imiona i Nazwiska Lekarzy u których te wizyty miały miejsce, aczkolwiek przy tworzeniu bazy doszedłem do wniosku że wszystkich umieszczę w tabeli osoby i teraz mam problem jak napisać zapytanie żeby w jednym momencie wyciągnąć i pacjentów i lekarzy.
Jest to możliwe przy tak skonstruowanej bazie czy po prostu popełniłem wielki błąd wkładając wszystkich do jednej tabeli?

0
select * from Osoby

edit: co do zapytania powyzej, nie bardzo rozumiem z czym masz problem, skoro wszyscy sa w jednej tabeli. co do drugiego pytania to tak, to dobry pomysl trzymac osoby w jednej tabeli. zapobiegniesz dzieki temu duplikacji danych w sytuacji gdyby lekarz zostal przyjety jako pacjent.

0

katelx: chciałbym za pomocą zapytania utworzyć taką tabelę: Imię Pacjenta | Nazwisko Pacjenta | Data Wizyty | Imię i Nazwisko Lekarza który przyjmował pacjenta i w tym ostatnim mam problem bo nie wiem jak się dobrać do tych danych ponieważ wszystko jest składowane w Osobach. To co napisałem wygląda następująco:

Select Osoby.Imie, Osoby.Nazwisko, Wizyty.DataWizyty, Wizyty.IdLekarza, [tu chciałbym pobrać z tebeli Osoby imię i nazwisko lekarza i nie wiem jak się do tego odwołać]
From Osoby
Join Pacjenci On Osoby.IdOsoby=Pacjenci.IdOsoby
Join Wizyty On Pacjenci.IdPacjenta=Wizyty.IdPacjenta
Join PersonelMedyczny On Wizyty.IdLekarza=PersonelMedyczny.IdPracownika 
1

Podszedłeś do sprawy odwrotnie. Powinieneś zacząć od Select [kolumny] from Wizyty i do nich dołączyć Pacjentów - do pacjentów Osoby, oraz PersonelMedyczny i do niego znowu Osoby. Możesz kilka razy mieć jedną tabelę w zapytaniu, ale wtedy odwołujesz się do nich aliasem.

 
SELECT OsobaPacjent.Imie, OsobaPacjent.Nazwisko, OsobaLekarz.Imie, OsobaLekarz.Nazwisko, W.DataWizyty
FROM Wizyty W
JOIN Pacjenci P ON P.IdPacjenta = W.IdPacjenta
JOIN Osoby OsobaPacjent ON OsobaPacjent.IdOsoby = P.IdOsoby
JOIN PersonelMedyczny PM ON PM.IdPracownika = W.IdLekarza
JOIN Osoby OsobaLekarz ON OsobaLekarz.IdOsoby = PM.IdOsoby

Nie testowane - pisane z głowy. BTW. Jak już zakładasz jakieś nazewnictwo to się go trzymaj - masz IdLekarza w relacji z IdPracownika.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.