Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> 5 LEFT JOIN-ów?
piotrek24
post
Post #1





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 22.07.2006

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


Mam tabelę "uzytkownicy" z polami:

uzytkownik_id
uzytkownik_nazwa

oraz tabelę "zadania" z polami

zadanie_id
czynnosc_1
uzytkownik_id_1
czynnosc_2
uzytkownik_id_2
czynnosc_3
uzytkownik_id_3
czynnosc_4
uzytkownik_id_4
czynnosc_5
uzytkownik_id_5

Oczywiście poszczególne czynności mogą wykonywać ci sami bądź różni użytkownicy.

I teraz chcę wyświetlić 1 wiersz z tabeli "zadania" przydzielając każdemu numerowi id użytkownika odpowiednią mu nazwę z tabeli "uzytkownicy". Czy jedynym i najprostszym rozwiązaniem tego problemu jest użycie aż (a może tylko?) 5 złączeń zewnętrznych LEFT JOIN ?

Czyli:

  1. SELECT a.czynnosc_1, a.czynnosc_2, a.czynnosc_3, a.czynnosc_4, a.czynnosc_5, b.uzytkownik_nazwa AS uzytkownik_nazwa_1,
  2. c.uzytkownik_nazwa AS uzytkownik_nazwa_2, d.uzytkownik_nazwa AS uzytkownik_nazwa_3, e.uzytkownik_nazwa
  3. AS uzytkownik_nazwa_4, f.uzytkownik_nazwa AS uzytkownik_nazwa_5
  4. FROM zadania a
  5. LEFT JOIN uzytkownicy b ON a.uzytkownik_id_1 = b.uzytkownik_id
  6. LEFT JOIN uzytkownicy c ON a.uzytkownik_id_2 = c.uzytkownik_id
  7. LEFT JOIN uzytkownicy d ON a.uzytkownik_id_3 = d.uzytkownik_id
  8. LEFT JOIN uzytkownicy e ON a.uzytkownik_id_4 = e.uzytkownik_id
  9. LEFT JOIN uzytkownicy f ON a.uzytkownik_id_5 = f.uzytkownik_id
  10. WHERE zadanie_id = 1
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Sedziwoj
post
Post #2





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

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


@piotrek24
Jak masz źle zrobioną bazę to się potem nie dziw, że wychodzą jakieś głupoty próbując z niej coś pobrać.
Go to the top of the page
+Quote Post
piotrek24
post
Post #3





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 22.07.2006

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


Cytat(Sedziwoj @ 5.06.2008, 16:04:14 ) *
@piotrek24
Jak masz źle zrobioną bazę to się potem nie dziw, że wychodzą jakieś głupoty próbując z niej coś pobrać.


Ja tu nikogo nie proszę o ocenę mojej bazy danych. Żadne głupoty mi nie wychodzą i wszystko działa jak należy, ale specem nie jestem i chciałem się poradzić kogoś bardziej doświadczonego czy można by to zapytanie uprościć (choć od początku wydaje mi się że nie).

Tabele napisałem w uproszczeniu, w rzeczywistości wygląda inaczej. Poszczególne czynności nie składają się tylko z jednego pola tylko z kilku a ich liczba zmienia się w zależności od rodzaju czynności, dlatego pomysł cojack-a nie wchodzi w grę. Ale powtarzam, mój problem nie dotyczy budowy tabeli tylko zapytania więc napisałem to w uproszczeniu dla łatwego zrozumienia.

Ten post edytował piotrek24 5.06.2008, 19:55:09
Go to the top of the page
+Quote Post

Posty w temacie


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: 8.10.2025 - 22:42