![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 21.02.2016 Ostrzeżenie: (0%) ![]() ![]() |
Mam projekt z - w uproszczeniu - taką strukturą tabeli:
Konto (idkonta, login, blokada konta) Osoba (imię, nazwisko itd - połączone z tabelą Konto. Poza osobami mam też użytkowników 'instytucjonalnych') Zawodnik (numer licencji, data rejestracji itd - połączone z osobą kluczem IdOsoby) OsobaWInstytucji (połączenie osoby z klubami - tu jest największy zonk. Łączy trzy tabele kluczmi obcymi - osobę, klub i funkcję w klubie) Chciałbym wyświetlać dane łączące tabelę osoby, zawodnika i klubu. Niestety, problem polega na tym, że zawodnik może nie należeć do klubu. Drugi problem polega na tym, że może spełniać różne funkcje (zawodnika, trenera, działacza itd.), co załatwiam polem OsobaWInstytucji.IdFunkcji (to też jest Foreign key, ale pomińmy). Krótko mówiąc - OsobaId może być w tabeli OsobawWInstytucji kilka razy, w tym wcale z IdFunkcji równym 1. Albo ani razu. Kombinacja IdOsoby z IdFunkcji=1 może wystąpić tylko raz. Kod SELECT DISTINCT * FROM Osoba JOIN (Zawodnik, Konto, OsobaWInstytucji) ON (Osoba.IdOsoby=Zawodnik.IdOsoby AND Osoba.IdKonta=Konto.IdKonta AND OsobaWInstytucji.IdOsoby=Osoba.IdOsoby AND OsobaWInstytucji.IdFunkcji=1) Takie zapytanie znajduje mi tylko zawodników którzy są w klubach. Jak mam zmodyfikować zapytanie, aby znaleźć tych, których nie są w tabeli OsobaWInstytucji z wartością IdFunkcji=1? Nic mi nie wychodzi z osobistej dłubaniny... |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 385 Pomógł: 26 Dołączył: 22.03.2008 Skąd: TM Ostrzeżenie: (0%) ![]() ![]() |
Zrób UNION z SELECT'em podobnym do tego ale z tym drugim warunkiem innym.
Ten post edytował kajzur 21.02.2016, 22:33:30 -------------------- Zapraszam na mojego bloga. Dowiedz się jak uzyskać darmowy, zaufany certyfikat albo jak rozpoznawać głos ;)
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 21.02.2016 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki, naprowadziłeś mnie na rozwiązanie.
Na początku myślałem, że Twoja porada mi nie pomoże - dopóki nie doczytałem, że można używać 'fałszywych' kolumn, wypełnionych nullami, aby liczba kolumn dla UNION się zgadzała. Nie jest to może wyrafinowane, ale wystarczające. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 13:40 |