MySql - zapytanie

0

Jako ,że zapytaniami w MySQL bawiłem się strasznie dawno temu (jeszcze w szkole) to jestem powiedzmy troszkę zakurzony w temacie.
Dlatego zwracam się do was ,żebyście chociaż naprowadzili ponieważ sam walcze i walcze i nie wygląda ,żebym posuwał się do przodu.

Mam tabele uczniowie:
id_ucznia
Imie
Nazwisko

I tabele przedmioty:
Nazwa_Przedmiotu
id_ucznia
Ocena

I teraz pytanie: Czy jest możliwość napisania zapytania które pozwalało by stworzyć tabelę (normalną tabelke a nie mysql-owa) tego typu
Imie , Nazwisko , Przedmiot1, Przedmiot2, Przedmiot3
Jan , kowalski , 5, 5 , 1

1

Jest możliwość.

0

potwierdzam jest tylko co to jest (normalną tabelke a nie mysql-owa?

0

Rozwiązanie na Oraclu:

CREATE TABLE TABELA AS
SELECT U.imie,
       U.nazwisko,
       (SELECT P.ocena
          FROM przedmioty P
         WHERE     P.nazwa_przedmiotu = 'PRZEDMIOT1'
               AND P.ID_UCZNIA = U.ID_UCZNIA)
          AS PRZEDMIOT1,
       (SELECT P.ocena
          FROM przedmioty P
         WHERE     P.nazwa_przedmiotu = 'PRZEDMIOT2'
               AND P.ID_UCZNIA = U.ID_UCZNIA)
          AS PRZEDMIOT2,(select P.ocena from przedmioty P where P.nazwa_przedmiotu='PRZEDMIOT3' AND P.ID_UCZNIA=U.ID_UCZNIA )AS PRZEDMIOT3
from uczniowie U
0

Czyli rozumiem ,że w zależności od ilości przedmiotów zapytanie będzie się rozszerzać.
Czy nie ma możliwości ,żeby działało to na zasadze dla każdego przedmiotu zrób nową tabele ?

A jeśli chodzi o moje stwierdzenie tabela ale nie tabela to chodzi mi o wyświetlenie tego "dziennika" jako tabelki ,a nie o utworzenie tabeli w bazy danych

0

Jest możliwość. Skorzystaj z tabeli przestawnej, użyj PIVOT + dynamiczny SQL.

0

Może coś około GROUP_CONCAT i DISTING

 
SELECT CONCAT(TRIM(Uczniowie.Imie)," ",TRIM(Uczniowie.Nazwisko)) AS Uczen,GROUP_CONCAT(DISTING Przedmioty.Nazwa_przedmiotu SEPARATOR ",")  FROM Uczniowie
... 

Oczywiście jeszcze jakiś JOIN by się przydał. Nie mam jak tego przetestować ale coś by się chyba z tego dało wyrzeźbić.

0

Zaprojektuj tę bazę danych koszernie:
Uczniowie - Id, Imię, Nazwisko (albo Użytkownicy - Id, Imię, Nazwisko, Nauczyciel (bit))
Przedmioty - Id, Nazwa, ewentualnie NauczycielId (FK do Użytkownicy.Id)
Oceny - Id, PrzedmiotId, Ocena, Data, ewentualnie NauczycielId na wypadek zastępstw itp (FK do Użytkownicy.Id)

Robienie osobnej tabeli dla każdego przedmiotu to porażka, tak samo jak dodawanie kolumny per przedmiot. Baza danych nie jest w 3NF (http://pl.wikipedia.org/wiki/Posta%C4%87_normalna_%28bazy_danych%29), jest trudniejsza w utrzymaniu, wymaga pisania osobnych zapytań pod każdy przedmiot. Porażka pod każdym względem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1