Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MsSQL][PHP] Problem z wyświetleniem przydzielonych zadań, ZAPYTANIE
kusiu
post 9.09.2008, 09:47:07
Post #1





Grupa: Zarejestrowani
Postów: 163
Pomógł: 10
Dołączył: 24.01.2006

Ostrzeżenie: (30%)
XX---


Witam wszystkich,

Otóż mam pewien problemik... Chce wyswietlic zadania przydzielne dla konkretnego użytkownika.

Są 2 tabele:

ZADANIA_KAT (w ktorej znajduja sie kategorie zadan- z max 3ma zagłębieniami)
idk- ID kat
nazwa-nazwa kategorii
rodzic- jesli jest zero jest to kategoria glowna, jesli posiada pole jakas liczbe to dziecko rodzica o takim ID

ZADANIA_PRZ (przydzielone zadania)
idp- ID przydzielonego zadania
iuzy- ID uzytkowniak dla ktorego ma byc przydzielona ta kategoria zadan
kat - ID kategorii zadania do przydzielenia (z tabeli ZADANIA_KAT - idk)
zag - to dodalem dodatkowo, oznacza jakie zaglebienie ma ta przydzielona kategoria - jesli jest zero jest to kategoria glowna, jesli 1 to podkategoria, jest 2 to podpodkategoria

No i chodzi mi o wyswietlanie tych kategorii uzytkownikowi.

Czyli zalozmy ze w tabeli ZADANIA_PRZ jest takie cos:
idp iuzy kat zag
1 15 1 0
2 15 3 1
3 15 4 1
4 15 6 2
5 15 7 2


ZADANIA_KAT:
idk nazwa rodzic
1 zad1 0
2 zad2 0
3 zad2_1 2
4 zad2_2 2
5 zad3 0
6 zad3_1 5
7 zad3_1_1 6
8 zad3_1_2 6


wiec teraz najwazniejsza rzecz, mianowicie wyświetlanie.
Jesli nie bylo by zaglebien bylo by to proste, bo wyswietlilbym kat zadan dla uzytkownika o ID=15 wszytskie ktore maja "kat" z ZADANIA_PRZ ale problem jest gdy przydzielone zadania to podkategoria a ja znam tylko ich id w tabeli ZADANIA_KAT

bo to ma byc cos takiego ze w pierwyszm kroku wyswietlamy kategorie glowna przydzielonych zadan, po kliknieciu w nia podkategorie jesli jest a osttania mozliwosc to wyswietelnie podpodkategorii..

Nie wiem czy mnie dobrze rozumiecie ale mam po prostu problem z wyswietleniem np kategorii glownej przydzielonego zadania gdy w tabeli ZADANIA_PRZ jest informacja tylko o ID dziecka tej kategorii glownej.

PROSZE O POMOC!








Ok chodzilo mi o cos takiego(to wyswietlanie kat glownych udostepnionych zadan):

  1. SELECT k.* FROM zadania_kat k
  2. JOIN zadania_prz p ON k.idk=p.kat
  3. WHERE p.zag=0 AND iuzy=15
  4. UNION ALL
  5. SELECT k.* FROM zadania_kat k
  6. JOIN ( SELECT rodzic FROM zadania_kat k
  7. JOIN zadania_prz p ON k.idk=p.kat
  8. WHERE p.zag=1 AND iuzy=15
  9. ) v ON v.rodzic=k.idk
  10. UNION ALL
  11. SELECT k.* FROM zadania_kat k
  12. JOIN ( SELECT k.rodzic FROM zadania_kat k
  13. JOIN ( SELECT rodzic FROM zadania_kat k
  14. JOIN zadania_prz p ON k.idk=p.kat
  15. WHERE p.zag=2 AND iuzy=15
  16. ) v ON v.rodzic=k.idk
  17. ) v ON v.rodzic=k.idk
  18. ORDER BY sort


mozna to jakos prosciej napisac?
Go to the top of the page
+Quote Post
likemandrake
post 9.09.2008, 12:30:51
Post #2





Grupa: Zarejestrowani
Postów: 175
Pomógł: 17
Dołączył: 23.06.2006

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


Hmmm, na wstępie troszkę doczepiłbym się do zaprojektowanych tabel. Przede wszystkim staramy się używać angielskich nazw tabel i kolumn, gdzie do rozdzielenia wyrazów używamy znaku '_'. Po drugie klucz główny danej tabeli zalecane jest aby miał taką nazwę jak tabela + '_id'. Np. dla tabeli 'customer', klucz główny będzie nosił nazwę 'customer_id'. Po trzecie klucz obcy powinien mieć taką samą nazwę jak jego relacyjny odpowiednik w innej tabeli. Dodam jeszcze, że nie używamy liczby mnogiej dla nazw tabel smile.gif

Polecam również zapoznać się z zasadami normalizacji tabel, np. http://pl.wikipedia.org/wiki/Posta%C4%87_n...a_(bazy_danych)

Wracając do Twojego problemu, nie za bardzo chce mi się myśleć, ale za to polecam zapoznać się z takimi terminami jak złączenia zewnętrzne i wewnętrzne tabel, oraz poszukać gotowych rozwiązań na 'drzewa SQL'.

Pozdrawiam


--------------------
serwiswww.pl
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 26.04.2024 - 04:38