Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [sql/php] zapytanie zliczajace ilosc wystapien okreslonej wartosci
Forum PHP.pl > Forum > Przedszkole
kebq
witam
posiadam tabele dziennik a w niej pola z imionami nazwiskami ocenami i średnimi
chciałbym pobrać z bazy oceny z powiedzmy polskiego i policzyć ile jest "1" ile "2" etc
tyle że nie brakuje mi troszkę wiedzy jak to zrobić tongue.gif
  1. SELECT polski FROM dziennik
i co dalej? smile.gif
phpion
Podaj strukture bazy danych.
kebq
  1. CREATE TABLE dziennik (
  2. id int(6) NOT NULL AUTO_INCREMENT,
  3. nazwisko varchar(40) DEFAULT NULL,
  4. imie varchar(40) DEFAULT NULL,
  5. adres text,
  6. memo text,
  7. polski tinyint,
  8. matematyka tinyint,
  9. biologia tinyint,
  10. chemia tinyint,
  11. historia tinyint,
  12. wos tinyint,
  13. informatyka tinyint,
  14. angielski tinyint,
  15. niemiecki tinyint,
  16. przedsiebiorczosc tinyint,
  17. srednia float(4),
  18. PRIMARY KEY (id),
  19. UNIQUE KEY id (id),
  20. FULLTEXT KEY nazwisko (nazwisko,memo)
  21. ) TYPE=MyISAM AUTO_INCREMENT=1

wiem ze nie najlepiej ale..
phpion
Uuu, daruj sobie taka strukture, daleko na niej nie zajedziesz. Ja bym widzial ja tak:
uczniowie:
id, imie, nazwisko
przyklad:
1 Jan Kowalski
2 Ewa Nowak

przedmioty:
id, nazwa
przyklad:
1 Polski
2 Religia

dziennik:
id_ucznia, id_przedmiotu, ocena
przyklad:
1 1 1 // Jan ma z polskiego 1
2 2 4 // Ewa ma z religii 4
1 1 3 // Jan sie poprawil i z polskiego dostal 3
kebq
skrypt pisany bardzo na szybko + poziom moich umiejętności, tak wyszło, wiem ze da sie lepiej zaprojektować struktura bazy
czy na aktualnej strukturze da się zliczyć w miarę prosto ilość wystąpień np. jedynek z polskiego?
Zeman
SELECT COUNT(*) as ile, polski FROM tabela GROUP BY polski
phpion
Moznaby pokombinowac ale moj przyklad jest duzo lepiej zorganizowany! Nie ma redundacji danych, sa 2 osobne tabelki dla uczniow oraz przedmiotow, oraz laczaca je tabelka z ocenami. Na takiej strukturze mozesz wszystko! Liczyc srednie kazdego ucznia, sumowac oceny (jesli licza sie jako punkty), wskazywac najlepszych uczniow, najgorszych. Przejdz na moja baze...
kebq
Zeman:
  1. SELECT COUNT(1) AS ile, polski FROM dziennik GROUP BY polski

rozumiem ze to mi zliczy jedynki z polskiego?
BTW jaką funkcje pełnia ' i ` w których czasami zamykane są nazwy tabel etc?

phpion.com: kiedy będę przepisywać tą prowizorkę z której teraz korzystam na pewno zastosuje twoje rady, dzięki smile.gif
phpion
Nie, kod zemana wypisze ci wszystkie isntiejace wartosci dla polskiego wraz z liczba ich wystapien. Nie dawaj 1 zamiast * - zostaw *.
Zeman
Cytat(kebq @ 10.04.2007, 22:49:10 ) *
BTW jaką funkcje pełnia ' i ` w których czasami zamykane są nazwy tabel etc?


Nazwy pól i tabel powinno się pisać w `nazwa`, jest to składnia mysqla. Praktycznie w 99% nie potrzeba pisać `. Są jednak przypadki, gdy będziemy chcieli mieć nazwę pola lub tabeli taką samą jak któreś słowo kluczowe SQLa. Co wtedy? Baza zgłosi błąd jeśli nazwa nie będzie w ``.
Np

wywali błąd:
  1. SELECT events FROM tabela


poprawnie:
  1. SELECT `events` FROM tabela
aga323
phpion.com a jak najlepiej napisać by skrypt wczytujący oceny 1 ucznia z poszczególnych przedmiotów?
I druga sprawa jeśli w moim dzienniczku oceny miałby wprowadzać wychowawca to chyba najlepszym rozwiązaniem byłoby pokazanie listy uczniów i ich ocen z 1 przedmiotu. Tylko teraz jakby można było rozwiązać problem wprowadzania tych ocen, w formie formularza czy jak, bo za bardzo nie mam na to pomysłu...
kebq
Cytat(phpion.com @ 10.04.2007, 19:30:42 ) *
dziennik:
id_ucznia, id_przedmiotu, ocena
przyklad:
1 1 1 // Jan ma z polskiego 1
2 2 4 // Ewa ma z religii 4
1 1 3 // Jan sie poprawil i z polskiego dostal 3


witam po dłuższej przerwie
mam problem ze skonstruowaniem tej części
mianowicie, jak mam ściągnąć id_ucznia i przedmiotu?
dodać pola o takich samych nazwach jak w poprzednich tabelach? tongue.gif
phpion
Możesz to zrobić np. tak, że tworzysz formularz z dwoma polami <select> i jednym <input type="text"> oraz buttonem do przesłania formularza winksmiley.jpg Do pierwszego selecta wczytujesz wszystkich uczniów w formie <option value="$id">$nazwisko</option> i analogicznie do drugiego wczytujesz wszystkie przedmioty <option value="$id">$nazwa</option>. Potem wybierasz z listy rozwijanej odpowiedniego ucznia, przedmiot, wpisujesz ocene i wysyłasz formularz. Po sprawie.
kebq
chodziło mi o konstrukcję tej części bazy danych tongue.gif
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.