Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zliczanie wielu wartosci
Forum PHP.pl > Forum > Bazy danych > MySQL
Kinool
witam czy jest możliwe zarobić w jednym zapytaniu czegoś takiego:

tabela uczen:
uczen_id, user_name, klasa_id

tabela sprawdziany:
sprawdzian_id, uczen_id, przedmiot_id, ocena, czas

tak mniej więcej wyglądają tabele z jednego przedmiotu może być kilka sprawdzianów wiec jeden uczeń może dostac kilka ocen, chciał bym zliczyć ile dany uczen ma 5, 4, 3 itd i z jakich przedmiotów i właśnie nie wiem czy można to zrobić to w jednym zapytaniu czy trzeba rozbić na kilka zapytan dla kazdej oceny odzielnie?

acha i jeszcze jedno smile.gif czy szybsze jest zlaczanie przez JOIN
  1. SELECT uczen.*
  2. FROM uczen LEFT JOIN sprawdziany ON (sprawdziany.uczen_id=uczen.uczen_id)
czy
  1. SELECT uczen.*
  2. FROM uczen, sprawdziany WHERE sprawdziany.uczen_id=uczen.uczen_id


(pomijajac co sie pobiera, jedynie samo laczenie)
czy nie ma to zadnego znaczenia na wydajnosci?
popbart
Cytat
chciał bym zliczyć ile dany uczen ma 5, 4, 3 itd i z jakich przedmiotów

  1. SELECT uczen_id,przedmiot_id,ocena,count(sprawdziany.sprawdzian_id) AS ile
  2. FROM sprawdziany GROUP BY przedmiot_id,ocena
  3. ORDER BY uczen_id
Kinool
nie o to mi chodzi

che wiedziec ile ma 5, ile ma 4, ile ma 3 nie ile jest wszystkich ocen razem tylko poszczegolnych ocen

np. ze oceny 5 jest 8 oceny 3 jest 12 smile.gif
DeyV
ad 2.
FROM uczen, sprawdziany jest równoznaczne z INNER JOIN.
Ja jednak preferuję formę JOIN, z uwagi na to, że dzięki niej zapytania są znacznie bardziej czytelne.

ad 1.
Ja nadal nie rozumiem, co chcesz osiągnąć.
Podaj może przykładowe dane oraz wyniki, jakie chciałbyś otrzymać.
Kinool
powiedzmy ze w tabeli sprawdziany sa dane dotyczace sprawdzianu, jego czas numer sprawdzianu (id) przedmiotu z jakiego byl sprawdzian (id), uczen (jego id) oraz ocena jaka dostal uczen za sprawdzian

powiedzmy ze sprawdziany byly z matmy, polaka, biologi i fizyki
i ktos dostal nastepujace oceny 4, 5, 4, 3

i tera chcialbym wiedziec ile bylo ocen dobrych, bardzo dobrych, dostatecznych itp

czli zapytanie powinno dac w wyniku cos takiego

bd 1 (jedna piatka)
db 2 (dwie dobre)
dst 1 (jedna dostateczna)

moglbym to zobic poprzez
  1. SELECT COUNT(*)
  2. FROM sprawdziany WHERE ocena=5
zrobic relace z tabela uczi i wiedziec np ile ktos mial 5 powiedzmy z matmy czy w jakims tam okresie ale dla kazdej oceny musial bym robc takie zapytanie i chodzi mi o to czy da sie to zrobic w jednym
popbart
Cytat
che wiedziec ile ma 5, ile ma 4, ile ma 3 nie ile jest wszystkich ocen razem tylko poszczegolnych ocen


Dlatego celowo zgrupowalem po przedmiocie i ocenie,przetestuj moze te zapytanie a nie macisz tylko angrysmiley.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.