Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]inner join "lub"
Forum PHP.pl > Forum > Przedszkole
neo1986kk
Mam do przerobienia zapytanie, które pobiera osoby robiące dany projekt

robiących projekt może być:
Jedna osoba, dwie , lub trzy


To zapytania działa mniejwiecej tak ze pobiera z projektów odrazu sprawdzając ich imiona

  1. SELECT projekty.user1, projekty.user2, projekty.user3, osoba1.imie, osoba2.imie, osoba3.imie FROM pojekty INNER JOIN users osoba1 ON projekty.user1 = osoba1.id INNER JOIN users osoba2 ON projekty.user2 = osoba2.id INNER JOIN users osoba3 ON projekty.user3 = osoba3.id


Teraz jeśli projekt wykonuje jedna osoba, zapytanie oczywiście sprawdza resztę i nie zwraca nic...

Może macie pomysł jak poprawić to zapytanie, aby w razie gdyby projekt wykonała jedna, bądź dwie osoby, wykonało się ono poprawnie?

Pozdrawiam
Damonsson
inner join łączy rekordy które są zarówna w jednej jak i w drugiej tabeli. Musisz użyć LEFT/RIGHT JOIN, zależnie jak tam powinno być.
wizarts
W jednej tabeli przechowuj dane użytkowników, w drugiej dane o projektach w trzeciej szczegóły realizowanego projektu ( project_team, czy jakoś tam wink.gif ),gdzie będą powiązania użytkowników z projektami. Wtedy zapytanie będzie wyglądać wtedy mniej więcej tak:

  1. SELECT us.UserID, us.Imie, us.Nazwisko FROM
  2. project pj JOIN project_team pt ON pj.ProjectId = pt.ProjectId
  3. JOIN users us ON pt.UserId = us.UserId


Nie musisz się wtedy zastanawiać ile osób uczestniczyło w projekcie.
Powyższe zapytanie jest słuszne przy założeniu, że każdy projekt był już realizowany i przy realizacji każdego z projektów uczestniczyła przynajmniej jedna osoba.

Możesz dodatkowo ograniczyć zapytanie poprzez dodanie do tabeli project kolumnę status i badać tylko projekty ze statusem, który mówi o tym, że projekt jest w trakcie realizacji lub został już zrealizowany.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.