Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] Zapytanie do bazy - joiny., Problem.
Grzesiek23
post
Post #1





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

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


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ł? (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
trafas
post
Post #2





Grupa: Zarejestrowani
Postów: 87
Pomógł: 12
Dołączył: 31.05.2006

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


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





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

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


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 (IMG:style_emoticons/default/sad.gif)

Ten post edytował Grzesiek23 6.02.2011, 19:05:51
Go to the top of the page
+Quote Post
trafas
post
Post #4





Grupa: Zarejestrowani
Postów: 87
Pomógł: 12
Dołączył: 31.05.2006

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


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


Ten post edytował trafas 6.02.2011, 19:17:21
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: 23.08.2025 - 11:08