![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 64 Pomógł: 0 Dołączył: 18.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
mam baze danych o takiej strukturze:
na napisałem coś takiego:
w tym moim kodzie jest funkcje OCENA (mająca własne zapytanie do bazy), która jest wywoływana tyle razy ilu jest uczniów w klasie, i sluży do wyświetlenia ocen uczna z danego przedmiotu A moje pytanie brzmi, czy nie da się jakoś napisać tego w taki sposób, aby wszystko zmieścić w jednej funkcji i napisać tylko jedno zapytanie do bazy danych, tak by wyświetliła taki wynik: OCENY Z MATEMATYKI: Nazwisko1 Imię1 - 1, 5, 3, 4 Nazwisko2 Imię2 - 5, 1, 4, 4 z góry dziękuje za wszelką pomoc |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 850 Pomógł: 120 Dołączył: 15.02.2007 Skąd: Łódź Ostrzeżenie: (10%) ![]() ![]() |
moglbys LEFT JOIN ale musialbys miec cos co łaczy 3 tabele (jakas kolumno co znajduje sie w kazdej z tych 3 tabel)
a tu masz podobny temat http://forum.php.pl/index.php?showtopic=68162 |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 366 Pomógł: 261 Dołączył: 23.09.2008 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
jakbyś podał zrzuty tabeli z przykładowymi danymi było by miło bo bym miał na czym testować a aż taki ambitny by samemu sobei wszystko wrzucać nie jestem .... no i strzelac zapytaniami także nie mam ochoty ;]
Więc prosze o zrzut tabeli z przykładowymi danymi przypuśćmy po 5 rekordów z każdej ale żeby także się nakładały - dzieki. -------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 1 566 Pomógł: 37 Dołączył: 14.05.2003 Skąd: Kraków ![]() |
Jesteś od niedawna na forum, dlatego informuję Cię, że posiadamy takie coś jak tagi, które są wymagane na tym subforum oraz bbCode. Poprawiam, ale ostatni raz, następny temat niezgodny z regulaminem zostanie zamknięty.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 64 Pomógł: 0 Dołączył: 18.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
http://zsgozd.avx.pl/inne/tabela.sql
tu jest zrzut całej bazy, co do LEFT JOIN to próbowałem, ale coś mi nie szło, zresztą problem jest taki że ma się wyświetlać cała lista uczniów i oceny, a ocen jest więcej niż jedna i z tym miałem największy problem i przepraszam za brak tagów |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 1 366 Pomógł: 261 Dołączył: 23.09.2008 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
i zmień oceny z int na varchar
*edit* Poprawienie wyglądu wyników:
Ten post edytował melkorm 5.10.2008, 16:20:45 -------------------- |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 64 Pomógł: 0 Dołączył: 18.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
dzięki za pomoc, nauczyłem się jak łączyć tabelki, ale natrafiłem na kolejny problem
napisałem coś takiego: CODE $id_przedmiot = $_POST['przedmiot_id']; $id_klasa = 15; $zapytanie = mysql_query(" SELECT nazwisko, imie, ocena, id_przedmiot, id_ucznia, uczen_idklasy FROM uczniowie LEFT JOIN oceny ON (id_ucznia=id_uczen) WHERE id_przedmiot=$id_przedmiot AND uczen_idklasy=$id_klasa GROUP BY id_ucznia ORDER BY nazwisko "); ale niestety nie zwraca mi wszystkich ocen, a jedynie pierwszą, zamiast " Pierwszy Uczeń - 3 2 4 5 5 1 " mam tylko "Pierwszy Uczeń - 3 " no i nie wyświetla mi uczniów, którzy nie posiadają ocen, ale to narazie mnie nie martwi. Może jakaś rada, jak temu zaradzić ![]() Ten post edytował modic 5.10.2008, 21:49:56 |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 1 366 Pomógł: 261 Dołączył: 23.09.2008 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Cytat ale niestety nie zwraca mi wszystkich ocen, a jedynie pierwszą, zamiast " Pierwszy Uczeń - 3 2 4 5 5 1 " od tego było GROUP_CONCAT() w moim zapytaniu ;] -------------------- |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 64 Pomógł: 0 Dołączył: 18.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
użyłem GROUP_CONCAT ale teraz w ogóle nie wyświetla mi ocen na stronie
kod do wyświetlenia wyników zapytania wygląda tak, ale pokazuje mi tylko nazwisko i imię, bez oceny CODE while ($wynik = mysql_fetch_array($zapytanie)) { $id = $wynik['id_ucznia']; $imie = htmlspecialchars($wynik['imie']); $nazwisko = htmlspecialchars($wynik['nazwisko']); $id_rodzic = $wynik['uczen_idrodzica']; $ocena = $wynik['ocena']; echo "$liczba. $nazwisko $imie - $ocena"; } czy do wyświetlenie zawartości ocen nie trzeba dopisać czegoś jeszcze ![]() |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 1 366 Pomógł: 261 Dołączył: 23.09.2008 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
no kolego ale pokaż zapytanie ....
ostatnio Twoje zmienione. Co do uczniów bez ocen - przyczyna brak spełnienai warunku czyli brak id_przedmiotu ;] Ten post edytował melkorm 6.10.2008, 00:46:59 -------------------- |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 64 Pomógł: 0 Dołączył: 18.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
wszystko działa tak jak należy, jedynie nie wyświetla mi uczniów, którzy nie mają ocen z danego przedmiotu, ale jakoś dojdę jak to zrobić
melkorm, jakbyśmy się kiedyś spotkali to przypomnij mi, że ci flaszkę wisze ![]() |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 2 Dołączył: 7.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Przeglądając posta i Twój schemat bazy danych widzę, że zaczynasz dopiero stawiać pierwsze kroki. Warto, żebyś trzymał się kilku rzeczy: 1. Staraj się nazywać atrybuty analogicznie jak tabelę. Raz masz imię drugim razem masz imie_rodzica. W sumie jak nie znam bazy to nie wiem czego dotyczy imie w tabeli uczniowie. Lepiej jakbyś miał: uczniowie (uczen_id, uczen_imie, uczen_nazwa). Jak masz np oceny to: (oceny_id, ocena_przedmiot_id, ocena_uczen_id). Dzkięki temu każdy atrybut sam się opisuje. Teraz możesz nie mieć problemu ale jak przyjdzie już kilkanaście tabel to zaczną się problemy 2. Używaj nazw angielskich 3. Używaj prefix-y przed nazwami relacji ułatwi to instalację schematu w bazie, która ma już tabele 4. Widzę, że używasz w nazwach liczby mnogiej i pojedyńczej w nazwach atrybutów to łanie ![]() pozdrawiam munky |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 64 Pomógł: 0 Dołączył: 18.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
masz rację, dopiero zaczynam nie jeszce nie wyrobiłem sobie "dobrych" nawyków, ale powoli się rozwijam
![]() dzięki za dobre rady, juz zaczołem je wykożystywać, bardzo sie przydaję |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 04:37 |