Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/sql] Tworzenie zapytania
Forum PHP.pl > Forum > Przedszkole
Kreton
Witam, potrzebuję stworzyć zapytanie: przykładowo:
  1. UPDATE `klasa` SET `Matematyka` = '5,5,5,5',`Język Polski` = '5,5,5,5',`Historia` = '5,5,5,5',`Angielski` = '5,5,5,5',`Biologia` = '5,5,5,5',`Chemia` = '5,5,5,5' WHERE `id` = '5' ;


Mam 2 tablice : $kolumny, gdzie od indeksu 3 zaczynają się przedmioty ( a właściwie nazwy przedmiotów, ale także są to nazwy kolumn w tabeli z ocenami w bazie ). $nowe_oceny ( oceny przesłane przez formularz )gdzie również indeksowanie zaczyna się od 3, aby zachować zgodność z tablicą $kolumny. I teraz nie wiem jak automatycznie takie zapytanie jak wyżej wygenerować, chodzi tylko o siąg pomiędzy 1 przedmiotem a ostatnim. Liczba przedmiotów się zmienia, wiec musi to być generowane na podstawie tych tablic wyżej.
Pomóżcie bo nie mam zielonego pojęcia jak to zrobić :/
SongoQ
A dlaczgo nie rozbijesz to na tabele. Bo nie sadze ze za kazdym razem gdzie dojdzie inny przedmiot robisz nowa strukture i zmieniasz logikie w kodzie.

Rozbiej na tabele przedmiot, ocena i to ze soba wszystko polacz

A tak zanim cos zrobisz polecam przeczytac ksiazeczke podstawy SQLa tam takie przypadki sa opisane.
Kreton
Obecnie nie mam kasy żeby sobie taką książeczkę kupić. Możesz troszkę szerzej odnośnie polącznia table przedmiot i ocena ? Pozatym dodawanie przedmiotów poprostu powoduje dodanie kolumny w tabeli oceny. Więc nie wiem o jaką zmianę logiki w kodzie chodzi ?
acztery
kasy nie masz ale masz inteternet na ten temat znajdziesz mase
Kreton
W zasadzie to nie wiem na jaki konkretny temat mam szukać w necie -.-

Dobra poradziłem sobie z tym. Ale powiedzcie mi dlaczego praktykowanie czegoś takiego nie jest dobre ? Mało efektywne lub coś w tym stylu ? A tego co obecnie widzę działa bez zarzutów.
SongoQ
Dokladnie malo efektywne. Nowe przedmioty powoduja zmiane logiki jak i struktury bazy

klasa
id | nazwa

przedmiot
id | nazwa

ocena
id | wartosc

uczen
id | imie | nazwisko | klasa_id

przedmiot_klasa
id | przedmiot_id | klasa_id

uczen_ocena
id | uczen_id | ocena_id

Takie cos, oczywiscie mozna zrobic to inaczej ale takie rozbicie jast latwiejsze do zaimplementowania i wiele rzeczy wynika z relacji.
Kreton
No dobra, ale załozmy jak mam pobierać oceny ? Patrze na to co ty napisałeś. Strukture tabeli. I w żaden sposób nie wiem jak to wszytko połączyć :/ Sry, ale naprawde tego nie kumam :/ Czym rózni się tutaj tabelka ocena od ocena_ucznia ? czym przedmiot od przedmiot_klasa ?

Gdybyś mogł to słownie rozwinąć to był bym bardzo wdzięczny.
SongoQ
Tabela klasa ocena przedmiot to sa tabele z definicja. Pozostale to tabele zlonczeniowe, w nich wtedy siedza najawzniejsze dane.

Zapytanie ktore wyciaga potrzebne dane to zlanczenie tabel. Zapoznaj sie z tematem relacji w bazach danych i ogolnie z tematem relacyjnych baz danych, wtedy zrozumiesz strukture.
Kreton
ok, wielkie dzięki smile.gif
Gdyby ktoś miał jakieś ciekaw artykuły na ten temat jestem gotowy smile.gif Narazie idę mieszać po googlach smile.gif


Dobra poszukałem na necie, troszkę artykułów. Mam tylko pytanie, czy to co mam tutaj użyć to są tzw. JOIN-y ? Iloczyny kartezjańske ?
SongoQ
Cytat
Dobra poszukałem na necie, troszkę artykułów. Mam tylko pytanie, czy to co mam tutaj użyć to są tzw. JOIN-y ? Iloczyny kartezjańske ?

TAK.
Kreton
Ok, wiem już co i jak. Tylko mam kolejne pytanie.
Tabela oceny: Założmy ze skrypt bedzie dodawał oceny do tej tabeli w takiej formie:

Kod
ID | ID_ucznia | ID__Przedmiotu | Oceny Tego przedmiotu

W szkole będzie 13-15 przedmiotów. Uczniów od 200 do 1000. Wiec będzie to 15 tysięcy krotek. Na moje oko to bardzo dużo. Czy jeżeli potem będę chciał pobrać te oceny, to zapytanie nie będzie trwało bardzo długo ? Trzeba będzie przeszukać 15 tysięcy wierszy.
mike
Cytat(Kreton @ 6.08.2006, 12:54 ) *
Wiec będzie to 15 tysięcy krotek. Na moje oko to bardzo dużo. Czy jeżeli potem będę chciał pobrać te oceny, to zapytanie nie będzie trwało bardzo długo ? Trzeba będzie przeszukać 15 tysięcy wierszy.

Nie martw się o to.
15tys. żadna ilość dla bazy danych.

Może problem byłby jakbyś iał tych danych z 10 000 000, to tak ale dla 15tys. to pikuś.
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.