Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL]inner join "lub"
neo1986kk
post
Post #1





Grupa: Zarejestrowani
Postów: 561
Pomógł: 3
Dołączył: 2.02.2009

Ostrzeżenie: (0%)
-----


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

Ten post edytował neo1986kk 29.11.2012, 00:13:29
Go to the top of the page
+Quote Post
Damonsson
post
Post #2





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


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ć.
Go to the top of the page
+Quote Post
wizarts
post
Post #3





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 19.11.2012

Ostrzeżenie: (0%)
-----


W jednej tabeli przechowuj dane użytkowników, w drugiej dane o projektach w trzeciej szczegóły realizowanego projektu ( project_team, czy jakoś tam (IMG:style_emoticons/default/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.

Ten post edytował wizarts 29.11.2012, 21:09:39
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 7.10.2025 - 06:19