MySql - zapytanie

GU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 13
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

fourfour
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 627
1

Jest możliwość.

abrakadaber
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6610
0

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

plug
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Krk
0

Rozwiązanie na Oraclu:

Kopiuj
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
GU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 13
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

Vardamir
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0

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

perlon
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 33
0

Może coś około GROUP_CONCAT i DISTING

Kopiuj
 
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ć.

ŁF
  • Rejestracja: dni
  • Ostatnio: dni
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.