1

Temat: Poważny problem - kolumny i konkretne okna = współpraca

Ostatnio edytowany przez tomboy (2009-02-04 20:38:20)

2

Odp: Poważny problem - kolumny i konkretne okna = współpraca

A to zalezy do tego co chcesz potem robic z ta 'tabela' z kolumnami 'przedmiot1',...

3

Odp: Poważny problem - kolumny i konkretne okna = współpraca

Potrzebuje dodać je do osobej tabelki jako klucz obcy.

INSERT INTO oceny (id_student,id_nazwa_przedmiotu,ocena) VALUES ('5','1',,'',);

Chciałbym aby było tego rodzaju wynik:

INSERT INTO oceny ( id_student,nazwa_przedmiotu1,nazwa_przedmiotu2,nazwa_przedmiotu3,nazwa_przedmiotu4) VALUES ('1(serial)','1','2,',3','4','5');

Żeby wartości "nazwa_przedmiotu" były kolumnami, dla wartości przedmiotów tj: "matematyka, fizyka itd"
np:

Studenci | Fizyka | Matematyka | itd
----------------------------------------------------
Marian    |     2    |      3            |  2   

ITD...

Cyfry będą ocenami, później jeszcze żeby było można wykonywać na nich filtracje, jakieś operacje. Musze do tego tworzyć nową tablekę, czy moge wykorzystać wartości w kolumnach? Nazwy będą identyczne co w tych kolumnach, ale kolumnami nie są, niestety, dlatego się pytam sad

4

Odp: Poważny problem - kolumny i konkretne okna = współpraca

Wybacz ale troche to bez sensu. Ilosc przedmiotow moze sie zmieniac (nie mozesz zalozyc ze nie) i co wtedy reorganizujesz tabele dodajac wiersz.
Po to uzywasz postgresa, relacyjnej bazy danych aby móc korzystac z tabelek.
To co chcesz osiagasz za pomoca trzech tabel

student(idS, imie, nazwisko)
przedmiot(idP, nazwa_przedmiotu)
oceny(idS,idP)

Zdecydowanie lepsze rozwiazanie niz twoje.

Odpowiadajac na pytanie czy sie da, pewnie tak ale przy pomocy fukcji wlasnorecznie napisanej.

5

Odp: Poważny problem - kolumny i konkretne okna = współpraca

Hehe

Jakby normalnie nie istniało pojęcie normalizacji smile

Pozdrawiam
Pawel Socha

6

Odp: Poważny problem - kolumny i konkretne okna = współpraca

Masz racje, że oceny jak i ucznowie i wszystko inne może się zmieniać, ale ta baza ma być statyczna.

Nie wspomniałem, że mam jeszcze tabelke ze studentami, osobną. Mam taki pomysł, żeby zrobić z tej kolumny imie_nazwisko w tabelce studenci klucz obcy dlatabelki, którą podałeś jako "oceny", wtedy pobierałbym jedynie tą kolumnę(studentów) i wynik byłby taki, że pobierałbym jedną kolumne do tableki "oceny". Tabele z przedmiotami również mam osobną na potrzeby nauczycieli (kto, co prowadzi). Pomyślałem sobie, że wykorzystam te dwie kolumny. Doszłaby jedynie kolumna "ocena".

                                 |  OCENY |
--------------------------------------------------
imie_nazwisko | przedmiot | Ocena
--------------------------------------------------
mietek           |                 |         
robert
itd

I mam problem. Nie wiem jak to ugryść, bo jeden uczeń może chodzisz na wszystkie przedmiotu. Tabelka byłaby ogromiasta uczeń *(razy) przedmiot = 28 możliwości.

Jestem w kropce sad

7

Odp: Poważny problem - kolumny i konkretne okna = współpraca

rski napisal ci solution jak sie patrzy


,-[19:58:46]merlin@[local]:5432=
`-merlin>create table student (id serial primary key, imienazwisko varchar(30));
NOTICE:  CREATE TABLE will create implicit sequence "student_id_seq" for serial column "student.id"
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "student_pkey" for table "student"
CREATE TABLE
Time: 75,232 ms
,-[19:58:55]merlin@[local]:5432=
`-merlin>create table przedmioty(id serial, przedmiot varchar(16));
NOTICE:  CREATE TABLE will create implicit sequence "przedmioty_id_seq" for serial column "przedmioty.id"
CREATE TABLE
Time: 3,948 ms
,-[19:59:15]merlin@[local]:5432=
`-merlin>create table oceny(id_studenta int, id_przedmiotu int, ocena numeric(4,2));
CREATE TABLE
Time: 4,204 ms

,-[19:59:52]merlin@[local]:5432=
`-merlin>insert into student(imienazwisko) values('ja'),('ty'),('inni'),('cizli');
INSERT 0 4
Time: 362,522 ms
,-[20:00:36]merlin@[local]:5432=
`-merlin>insert into przedmioty(przedmiot) values('sieci'),('analiza'),('fiza'),('matma');
INSERT 0 4
Time: 1,396 ms
,-[20:01:15]merlin@[local]:5432=
`-merlin>insert into oceny values(1,1,2.0);
INSERT 0 1
Time: 1,191 ms
,-[20:01:44]merlin@[local]:5432=
`-merlin>insert into oceny values(1,2,4.0);
INSERT 0 1
Time: 0,870 ms
,-[20:01:48]merlin@[local]:5432=
`-merlin>insert into oceny values(3,4,6.0);
INSERT 0 1
Time: 0,951 ms
,-[20:01:58]merlin@[local]:5432=
`-merlin>select s.imienazwisko as student, p.przedmiot, c.ocena from student s, oceny c, przedmioty p where s.id=c.id_studenta and c.id_przedmiotu=p.id;
 student | przedmiot | ocena 
---------+-----------+-------
 ja      | sieci     |  2.00
 ja      | analiza   |  4.00
 inni    | matma     |  6.00
(3 rows)

Time: 1,250 ms

Pomijam fakt FK, Unique itp ;]
I troche nie wiem po co kobinowac ...
Po co sobie zycie utrudniac tongue

Pozdrawiam
Pawel Socha

8

Odp: Poważny problem - kolumny i konkretne okna = współpraca

Nie bardzo rozumiem zapis:

values('ja'),('ty'),('inni'),('cizli')

Myślałem, że można jedynie zapisać w sposób:

values('ja','ty','inni','cizli') 

A, ty zrobiłeś z tego cztery otwarte i zamknięte zawiasy. Co to zmienia, jeżeli zapisze to tak jak podałeś?

I

p.przedmiot(i inne tego typu)  - nie widze tam takiej nazwy tabelki, albo wiersza, z kropką. Ten zapis znam, ale jako warunek, gdzie "p" jest nazwą tabelki, a "przedmiot" nazwą kolumny. Pojedyncze literki przed kropką.
Albo:

student s   (samopas sobie chodzi "s")

(wiem co to "as" - analogia do aliasu, dlatego nie pytam)

P.S Dziękuje za zainteresowanie.

Ostatnio edytowany przez tomboy (2009-02-06 22:12:03)

9

Odp: Poważny problem - kolumny i konkretne okna = współpraca

values('ja'),('ty'),('inni'),('cizli') - to robi insert z 4 rekordami

Myślałem, że można jedynie zapisać w sposób:

values('ja','ty','inni','cizli')  - a to robi insert z 1 rekordem do 4 kolumn


a to

p.przedmiot(i inne tego typu)  - nie widze tam takiej nazwy tabelki, albo wiersza, z kropką. Ten zapis znam, ale jako warunek, gdzie "p" jest nazwą tabelki, a "przedmiot" nazwą kolumny. Pojedyncze literki przed kropką.

to jeden z wielu sposobów na łączenie tabelek.

Pozdrawiam
Pawel Socha

10

Odp: Poważny problem - kolumny i konkretne okna = współpraca

11

Odp: Poważny problem - kolumny i konkretne okna = współpraca

SELECT s.kolumna1
       ,s.kolumna2
  FROM tabela1 s
       ,tabela2 y
 WHERE s.id=y.id
      --,itd

Ostatnio edytowany przez psocha (2009-02-07 10:13:25)

Pozdrawiam
Pawel Socha