Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Join gdy nie ma wartości w tabeli
mode5
post
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...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
kajzur
post
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 ;)
Go to the top of the page
+Quote Post
mode5
post
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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 13:40