Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL]duża baza - jak zrobić zapytania
Forum PHP.pl > Forum > Bazy danych
enigma
Witam
zastanawiam się jak zrobić zapytania do tak dużej bazy tongue.gif (6 tabel) screen z projektu:
http://img401.imageshack.us/img401/8718/bazaar1.jpg
powykreślałem parę rzeczy żeby nie motać tongue.gif
chodzi mi o takie coś, traktuję tabele Nieobecnosci jak taki rdzeń, i załóżmy że chcę wyciągnąć wszystkie dane z innych tabel dla uczniów nieobecnych jakiegoś dnia. I nie wiem jak się do tego zabrać
czy tabele Nauczyciel, Klasa, Uczen dać jako jeden podselekt, tabele Nauczyciel, Zajecia, Przedmiot jako kolejny podselekt i wtedy złączyć to jakoś z Nieobecnosci worriedsmiley.gif
Proszę o pomoc
dr_bonzo
Duza to ona jeszcze nie jest smile.gif ale to OT

Czemu Uczen i Klasa sa 1:1 ? Powinno byc N:1, uczen w jednej klasie, klasa ma wielu uczni[ow??].
Pousuwales niektore FK (brak idNauczyciela w Klasie)

Chcesz pobrac dane dla wszystkich nieobecnosci? To laczysz kolejno tabele JOINami - wzdluz linii.

Podaj konkretny przyklad, co chcesz wyciagnac.


Przenosze na Bazy danych
enigma
Cytat(dr_bonzo @ 18.02.2007, 14:22:41 ) *
Uczen i Klasa sa 1:1 ? Powinno byc N:1, uczen w jednej klasie, klasa ma wielu uczni[ow??].Pousuwales niektore FK (brak idNauczyciela w Klasie)
poprawiłem relacje, no i zamieszczam nowy screen, teraz nic nie zamazałem tongue.gif
http://img68.imageshack.us/img68/3681/baza2ss6.jpg

kurcze dziwny ten DBDesigner winksmiley.jpg po co do tabeli nieobecności wrzuca wszystkie klucze z powiązanych tabel

klasa - nauczyciel <- w tej relacji nauczyciel jest wychowawcą
przedmiot - zajęcia - nauczyciel -< tutaj chodzi o prowadzenie zajęć

Cytat(dr_bonzo @ 18.02.2007, 14:22:41 ) *
Podaj konkretny przyklad, co chcesz wyciagnac.
hmm, np uczniów którzy byli nieobecni dnia 15 stycznia 2007 na zajęciach z matematyki. Wynikowa tabela ma zawierać imię i nazwisko każdego ucznia, klasę do której chodzi oraz wychowawcę tejże klasy


Cytat(dr_bonzo @ 18.02.2007, 14:22:41 ) *
Przenosze na Bazy danych
sorry za pomyłkę tongue.gif
dr_bonzo
Cytat
sorry za pomyłkę

Nie tyle co pomylke, co przedszkole ma troche inny poziom smile.gif

Nie sprawdzane (bo jak? smile.gif)
  1. -- nazwy zmienione tak zeby mi sie latwiej pisalo, domyslisz sie o co chodzi
  2. /*
  3. skad wziasc - ucznia: Nieobecnosc - Uczen
  4. - klase: Nieobecnosc - Uczen - Klasa
  5. - wychowawce: Nieobecnosc - Uczen - Klasa - Nauczyciel
  6.  
  7.  
  8. - jak polaczyc z przedmiotem
  9.   Nieobecnosc - Zajecia - Przedmiot = Matematyka
  10. */
  11.  
  12. SELECT
  13. uczniowie.imie,
  14. uczniowie.nazwisko,
  15. klasy.nazwa,
  16. wychowawcy.imie, -- wychowawca
  17. wychowawcy.nazwisko -- wychowawca
  18. FROM nieobecnosci JOIN uczniowie ON uczniowie.id = nieobecnosci.uczen_id, -- uczen
  19. JOIN klasy ON klasy.id = uczniowie.klasa_id, -- jego klasa
  20. JOIN nauczyciele AS wychowawcy ON wychowawcy.id = klasa.nauczyciel_id, -- wychowawca klasy
  21. -- podlaczyc zajecia! / przedmimot
  22. JOIN zajecia ON zajecia.id = nieobecnosc.zajecie_id,
  23. JOIN przedmioty ON przedmioty.id = zajecia.przedmiot_id
  24. WHERE nieobecnosci.DATA = '15 stycznia 2007' AND przedmiot.nazwa = 'matematyka';
  25.  
  26.  
  27. -- tylko trzeba jeszcze chyba wybrac kazdego ucznia po razie
  28. -- bo jak go jednego dnia nie bylo na obu zajeciach to wystapi
  29. -- dwukrotnie, no chyba ze o to ci chodzilo
enigma
ok smile.gif rozumiem tylko jedno mnie zastanawia, no bo tutaj w projekcie bazy w tabeli Nieobecności jest większość kluczy obcych, to mi się takie dziwne wydaje, bo bo wszystko sprowadza się do jednej tabeli (chyba niezbyt wyraźnie określam mój problem tongue.gif) chodzi mi o to że jak np w Accesie tworzyłem tabele i relacje, to tam klucze nie były przekazywane jak w dbdesigner, łączyłem tylko odpowiadające pola

a głównie chodzi o to ze jak dodaję dane do tabeli uczniowie to muszę dodać id_klasy i id_nauczyciela. a po co, powinno być samo id_klasy, id_nauczyciela już jest w tabeli klasa, więc po co mam je wpisywać w tabeli uczniowie. Bez sensu
dr_bonzo
No wlasnie troche za duzo tych FK sie porobilo (wystarcza tylko te do polaczonych 'kreskami' tabel), to reszta jest nadmiarowa.
enigma
hhm, głupi program aaevil.gif nie ma czegoś lepszego, no bo ten dbdesigner jest w tym wypadku mało użyteczny
Vogel
moze DBWrench?
enigma
hmm, interesują mnie tylko free tongue.gif chyba będę używał tego dbdesigner ale nie będę rysował relacji i będzie bez zbędnych kluczy

a może jednak DBDesigner nie jest taki głupi tongue.gif tongue.gif tongue.gif bo tam są jakieś 2 typy relacji tongue.gif i dałem te drugi i ni ma tylu kluczy winksmiley.jpg
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.