PDA

Zobacz pełną wersję : SQL-Access - raporty pomoc w domówce



szafer
11-06-07, 17:22
Witam dostałem zadanie domowe ze szkoły :( Utworzyłem tabele jak na poniższych relacjach (mam nadzieje, że jest odpowiednia):

http://www.szafer.republika.pl/baza.jpg


Mam wykonać następujące zadania w języku SQL:

1. Zestawienie kosztów paliwa dla samochodów i pracowników w wybranym okresie czasu, tzn raport pogrupowany wg samochodów oraz wg pracowników.
2. Zestawienie kosztów oleju dla samochodów i pracowników w wybranym okresie czasu, tzn. raport pogrupowany wg samochodów oraz według pracowników.
3. Zestawienie kosztów myjni samochodowej dla samochodów i pracowników w wybranym okresie czasu. Należy uwzględnić częstotliwość korzystania z tej usługi tak aby znaleźć tzw. czyścioszków

prosiłbym bym o jakąkolwiek podpowiedź na pytania chętnie odpowiem

piotrg
11-06-07, 20:28
Od razu mówię, że nie jestem specjalistą od Accessa - nie lubie go, nie podoba mi się, moim zdaniem jest nieużytkowy. Ale za to na codzień używam mysqla.

Po pierwsze - nie rozumiem po co relacja samochody_kierowcy(nr_rej)->samochody(id_samochodu)... Co to niby ma robić?

Ja bym zaczął od przeprojektowania tych tabel. W taki sposób żeby relacje pomiędzy nimi miały sens i dało się je wykorzystać.

Dla przykładu... W tabeli pracownicy powinna być kolumna id. Pesel możesz sobie w tej bazie trzymać ale raczej do relacji powinno się użyć normalnie id (auto incremental + klucz podstawowy)

Tabela samochody kierowcy - w ogóle oderwana od rzeczywistości. No chyba, że potrzebujesz jej do generowania jakiegoś ogólnego zestawienia kto jeździ danym autem. No ale o tym nie ma mowy w treści zadania. Więc moim zdaniem - do śmietnika.

O ile dobrze zrozumiałem to tabela PIGS jest ogólnym logiem tego co się z autami dzieje, kto ich używa... Więc tak naprawdę to w tej tabeli powinny być wszelkie relacje.

Gdybyś w tabeli miał:



data_i_godzina; // Najlepiej jako unixowy timestamp - łatwo się to obrabia
id_samochodu;
id_kierowcy;
co_tam_jeszcze_chcesz;


To wtedy mógłbyś łatwo ...


TEN POST JEST DO EDYCJI. MUSIAŁEM SOBIE PÓJŚĆ NA CHWILę :)

szafer
11-06-07, 21:43
wielkie dzięki za zainteresowanie się moim problemem.
A więc te tabele w wiekszości sa z pierwszego zaliczenia i dlatego została ta tblSamochody_Kierowcy i chciałem jej użyć do tego by określić kto i kiedy tankował danym samochodem A tabela PIGS jest narzucona przez prowadzącego do tej bazy danych firmy transportowej. jest ona po to rzeby pracownicy mogli sie bezgotówkowo rozliczać na stacji a dane z faktur wpływają do niej ble ble.
Relacje rzeczywiście pogibałem ale musze dokładnie zobaczyć o co w nich chodzi i wziąść sie za poprawki.
Jeszcze raz dzięki.

dobra troche popoprawiałem poniżej zamieszczam linka do pliku i jak chcesz możesz zobaczyć jak to wygląda. Ja sie coś z tym plątam.

http://www.szafer.republika.pl/Spedycja.mdb

doderic
12-06-07, 00:51
tblSamochody_Kierowcy i chciałem jej użyć do tego by określić kto i kiedy tankował danym samochodem
Zgodznie z Twym pierwszym postem: jeden kierowca może jeździć wieloma samochodami, ale też jeden samochód może być używany przez wielu kierowców (to sugeruje użycie tblSamochody_Kierowcy). Widzę, że w projekcie .mdb, który załączyłeś, poprawiłeś to zgodnie z zaleceniami piotrg - i dobrze. Teraz możesz sprawdzać koszty na pracownika, a nie tylko na samochód. :tak_trzymaj:
Natomiast zastanawia mnie tabela tbl_Koszty_Eksp_Samochodu. O ile dobrze rozumiem, mają to być koszty eksploatacji danego Modelu/Marki, a nie konkretnego egzemplarza? Tak na prawdę ta tabela powinna być zapytaniem, które generuje te dane na podstawie informacji z tblPIGS. - dokładnie to, co masz zrobić w zadaniu.


Ja sie coś z tym plątam.
Zostań przy 3 podstawowych tabelach i spróbuj napisać zapytania...

piotrg
12-06-07, 06:25
Aha. Uwaam, e uywanie jednej tabeli z logiem operacji jest bez sensu. Moim zdaniem powiniene uy kilku tabel i mie np. tblTankowanie, tblMyjnia, tblOlej. Pare tabel wicej ale uatwi to potem tworzenie zapyta

Gdy np. miaby tak struktur tblTankowanie



id;
timestamp;
id_samochodu;
id_kierowcy;
ilosc_paliwa;
cena_paliwa;
;

To bez problemu robisz sobie zapytanie typu



SELECT * FROM `tblTankowanie` WHERE `timestamp` > '1233456345' AND `id_samochodu` = '1' AND `id_kierowcy` = '3' ORDER BY `timestamp` ASC;

Ehhh... Znowu musze i i nie moge sie rozwin :/

szafer
12-06-07, 06:40
Dobra udałomi się zrobić kwarende koszty eksploatacji. A sie namęczyłem.
Baza wygląda tak http://www.szafer.republika.pl/Spedycja.mdb
Teraz pozostało mi odpowiedziec na te trzy zadania ale to jutro. Nie miał bym nic przeciwko pomocy chłopaki :]

szafer
15-06-07, 06:33
dobra skończyłem :] dzięki wam za podpowiedzi, naprowadziły mnie na łatwiejszą droge