Left join bez podwójnych wierszy

0

Witam,
mam tabelę 'Pacjenci'
| IDPacjent | Imiona | Nazwisko | ... |
tabelę 'Szczepienia'
| IDPacjent | NazwaSzczepienia | DataSzczepienia
oraz tabelę 'Uczulenia'
| IDPacjent | NazwaUczulenia

Teraz próbuję stworzyć kartę pacjenta na której znajdą się informacje o pacjencie (czyli pola z Pacjenci) oraz na karcie pacjenta chciałbym mieć informacje o jego szczepieniach i uczuleniach.
Więc tworzę kwerendę wybierającą opartą na left joinie (pracuje w Accessie):

SELECT Pacjenci.*, [Karta Szczepień].NazwaSzczepienia, [Karta Uczuleń].NazwaUczulenia
FROM (Pacjenci LEFT JOIN [Karta Szczepień] ON Pacjenci.IDPacjent = [Karta Szczepień].IDPacjent) LEFT JOIN [Karta Uczuleń] ON Pacjenci.IDPacjent = [Karta Uczuleń].IDPacjent;

Wszystko fajnie i ładnie dopóki nie okaże się że pacjent ma 2 typy uczuleń/szczepień, czyli w tabeli np. szczepienie będą 2 wiersze w odniesieniu do jednego pacjenta:
4 | Zostavax | 2010-09-16
4 | Acambis | 2011-01-08

Wtedy inner join w wyniku kwerendy daje mi dwa wystąpienia pacjenta z ID=4 i w każdym zmienia typ uczulenia.
Jakie dać polecenie aby SQL scalał te dwa wiersze?

0

podaj przykładowe dane i wynik jaki chcesz uzyskać bo z tego co napisałeś to niewiele wynika

0

W załączniku screeny. Po prostu chce żeby w kwerendzie ta 'Anna Nowak' występowała w jednym wierszu bez względu na to ile ma uczuleń czy szczepień.

0

a co ma być w nazwie szczepień jeśli jest ich kilka?

0

Generalnie sam nie wiem jak to wykombinować, jednak ostatecznym wynikiem ma być formularz (który chce oprzeć na tej kwerendzie) i przeglądając po kolei rekordy pacjentów na jednej i tej samej karcie będę miał wymienione po kolei wszystkie szczepienia i uczulenia które ma pacjent, a nie jak jest teraz - rekord pacjenta występuje kilkukrotnie. Masz jakieś sugestie?

0

nie mam sugestii bo usilnie bronisz się przed napisaniem co chcesz dostać w wyniku zapytania. BTW może zastanów się czy nie zrobić tego kilkoma zapytaniami - jedno główne z listą pacjentów i dwa podrzędne - jedno dla szczepień i jedno dla uczuleń dla konkretnego pacjenta

0

Ok, faktycznie. Zmieniam w takim razie moje pytanie - jak 'scalić' rekordy o tym samym ID z karty szczepienia/uczulenia tak żeby w formularzu zostały wymienione np. po przecinku?

0

Osobne zapytanie do pobrania danych klienta, osobne do pobrania szczepień/uczuleń.
Jeśli myślałeś żeby dostać te wszystkie dane w jednym wierszu, to możesz przestać :).

0

niektóre szbd mają możliwość scalić tak dane, jednak w większości przypadków musisz albo napisać funkcję składowaną, która Ci takie dane zwróci albo zrobić to po stronie aplikacji

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