Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Zapytanie do bazy - joiny.
Forum PHP.pl > Forum > Bazy danych > MySQL
Grzesiek23
Witam!

Mam 3 tabele:
1. dzialy - id, name
2. grupy - id, name
3. dostep - id, dzial_id, grupa_id, opcja

Sprawa wygląda tak, że nie każdy dział / nie każda grupa ma swój "odnośnik" w tabeli dostęp.
Ja natomiast chciałbym wyświetlić wszystkie grupy / działy wraz z ich dostępem. Jeśli go nie mają (nie ma klucza w tabeli dostep), to chciałbym otrzymać wartość NULL po prostu.

Póki co, udaje mi się wyświetlić rekordy, które są mają klucze w tabeli dostęp.

Przykład (lista działów, nie wszystkie grupy są w tabeli "dostęp"):
- dział 1
--- grupa 1 -> dostep 2
--- grupa 2 -> NULL
--- grupa 3 -> dostep 4

Tabela dostep:
id - dzial - grupa - opcja
1 - 1 - 1 - 2
1 - 1 - 3 - 4

brakuje odwołania do grupy #2.


Ktoś byłby na tyle miły i mi pomógł? smile.gif
trafas
Proszę bardzo:

  1. SELECT
  2. dz.name,
  3. g.id,
  4. g.name,
  5. d.opcja
  6. FROM
  7. dzialy dz
  8. JOIN dostep d ON d.dzial_id = dz.id
  9. RIGHT JOIN grupy g ON g.id = d.grupa_id
Grzesiek23
Hmm ... puściłem ten kod (dodałem where, żeby wyświetlić dla konkretnego działu):

  1.  
  2. SELECT *
  3. FROM `dzialy` dz
  4. JOIN `dostep` d ON dz.id = d.dzial_id
  5. RIGHT JOIN `grupy` g ON g.id = d.grupa_id
  6. WHERE dz.id = 2
  7.  


I niestety dalej opuszcza mi działy, które nie mają kluczy w tabeli dostęp sad.gif
trafas
W poprzenim zapytaniu było wyswietlenie wszystkiego dla danej grupy.

To samo robisz dla danego działu i łączysz wyniki UNION:

  1. SELECT
  2. dz.name,
  3. dz.id,
  4. g.id,
  5. g.name,
  6. d.opcja
  7. FROM
  8. dzialy dz
  9. JOIN dostep d ON dz.id = d.dzial_id
  10. RIGHT JOIN grupy g ON g.id = d.grupa_id
  11.  
  12. UNION
  13.  
  14. SELECT
  15. dz.name,
  16. dz.id,
  17. g.id,
  18. g.name,
  19. d.opcja
  20. FROM
  21. grupy g
  22. JOIN dostep d ON g.id = d.grupa_id
  23. RIGHT JOIN dzialy dz ON dz.id = d.dzial_id
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.