![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 322 Pomógł: 15 Dołączył: 29.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam, opisze swój problem na przykładzie kas w warzywniaku bo za dużo bym miał pisania z tłumaczeniem na czym polega mój projekt.
Otóż w bazie danych mam zrobioną tabele dla każdej kasy. Wszystkich kas jest w sumie 8 Struktura przykładowej kasy: Kasa_1 {idzakupu, idpracownika, ilosc_zakupow, waga_zakupow, data} I tak dla każdej kasy. Mam zrobiony formularz który dodaje te wszystkie dane do poszczególnych kas. Jednak potrzebuje teraz pobrać dane ilosc_zakupow oraz waga_zakupow ze wszystkich kas z jednego konkretnego dnia np. 2011-10-11. Następnie zsumować te wartości (tego dnia kupiono 123 jabłka o wadze 123kg (przy założeniu że jabłko waży 1kg (IMG:style_emoticons/default/smile.gif) )) Myślałem żeby zrobić to za pomocą jednego zapytania ale zajmowało by kilometr i na dodatek nie ogarniam do końca funkcji JOIN (IMG:style_emoticons/default/sad.gif) Prosiłbym o pomoc. Pozdrawiam (IMG:style_emoticons/default/arrowheadsmiley.png) |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Przykładowa kasa nie umożliwia zapisania co zostało zakupione. Załóżmy, że kasa to:
Kasa_1 { idzakupu, idpracownika, towar, ilosc_zakupow, waga_zakupow, data}
Tylko moim zdaniem cała baza jest skopana. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 156 Pomógł: 1 Dołączył: 25.09.2007 Ostrzeżenie: (0%) ![]() ![]() |
Nie lepiej zrobić z tego jednej tabeli ?
Potem sumować po dacie i id danej klasy ? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 322 Pomógł: 15 Dołączył: 29.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
Przykładowa kasa nie umożliwia zapisania co zostało zakupione. Załóżmy, że kasa to: Kasa_1 { idzakupu, idpracownika, towar, ilosc_zakupow, waga_zakupow, data}
Tylko moim zdaniem cała baza jest skopana. Tak zgadzam się z tym co napisałeś że kasa nie umożliwia zapisania co zostało zapisane, ale nie wypisywałem wszystkich pól z tabeli. Znajdują się tam również towary, oraz inne ważne pola. Napisałem tutaj, ponieważ chciałem zobaczyć w jaki sposób mogę pobrać przykładowe dane z wielu tabel. Cytat(max_mcee @ 20.12.2011, 22:40:03 ) Nie lepiej zrobić z tego jednej tabeli ? Potem sumować po dacie i id danej klasy ? Teoretycznie tak, ale ostatnio dużo siedziałem nad lekturą Access'a i wyczytałem że lepiej nie pakować wszystkiego do jednego wora, tylko jedną tabele podzielić na kilka i połączyć je relacjami. I tą samą zasadę zastosowałem tutaj. Ok, daruje sobie przenośnie i napiszę jak faktycznie wygląda moja baza i jak planuje ją "zagospodarować" CODE pojemniki {id_pojemnik | nr_pojemnik | waga} pracownicy {id_pracownik | imie | nazwisko | brygada} produkcja {id_produkcja | ilosc_szt | ilosc_wg | zmiana | sr_wg_pr | data | braki | braki_pr | brygada} maszyna1 {id_produkcja | id_pojemnika | id_pracownik | ilosc | waga | zmiana | data | brygada} . . . maszyna8{j/w} Jak zauważyliście nie chodzi tutaj o kasy w warzywniaku, tylko o raport produkcyjny. Na koniec każdej zmiany z każdej maszyny spisuje raport ile i czego zostało wyprodukowane. Te informacje są zapisywane w tabeli odpowiadającej konkretnej maszynie. To mam zrobione. Następnie muszę pobrać te wartości, zsumować je i robić na nich działania (średnia waga produktu, procent braków itd). Po tych wszystkich obliczeniach chciałbym te dane zapisać w tabeli "produkcja". Myślę że dzięki temu będę mógł później w łatwy sposób tworzyć raporty z konkretnych dni. Co to tego kodu powyżej to sprawdze go jutro (tzn dzisiaj (IMG:style_emoticons/default/smile.gif) ) i dam znać jak się sprawdza. Pozdrawiam |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 40 Pomógł: 6 Dołączył: 20.12.2011 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
@basstone: Lepiej, a nawet bardziej właściwie.
@Barcelona: Chyba źle zrozumiałeś lekturę Access'a. Zauważ, że pomiędzy Twoimi tabelami maszyna1, ..., maszyna8 nie ma żadnej relacji (nie są one ze sobą w żaden sposób powiązane). Zatem nie spełniasz tutaj kryterium, o którym pisałeś, "że lepiej jedną tabele podzielić na kilka i połączyć je relacjami". To co próbujesz tutaj zrobić to "nieco przekombinowana" normalizacja. Normalizacja to jeden z trudniejszych etapów projektowania bazy danych. W sytuacji, którą nam opisałeś jedynym słusznym podejściem jest to zaproponowane przez basstone, choć wydaje mi się, że jeszcze coś będzie nie tak, bo nie znam specyfikacji całego systemu. Jak dla mnie to maszyna produkuje, czyli to co maszyna wyprodukuje powinno być zapisane w tabeli produkcji, natomiast maszyna, to po prostu maszyna. Podsumowując: Kod pojemniki {id_pojemnik | nr_pojemnik | waga} pracownicy {id_pracownik | imie | nazwisko | brygada} produkty {id_produktu | opis | inne_dane} produkcja {id_produkcja | id_maszyny | id_produktu | id_pojemnika | id_pracownik | ilosc | waga | zmiana | data | brygada} maszyny {id_maszyny | opis | inne_dane} Mając taką bazę danych możesz stworzyć sobie widok, który będzie realizował wszystkie obliczenia w łatwy sposób. Niestety, tak jak pisałem wyżej. Nie znam dokładnej specyfikacji systemu i ciężko mi ocenić, czy można tę bazę danych jeszcze bardziej/lepiej znormalizować. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 322 Pomógł: 15 Dołączył: 29.01.2010 Ostrzeżenie: (0%) ![]() ![]() |
I chyba od tego będę musiał zacząć, muszę przebudować bazę i poprzerabiać wcześniejsze formularze.
Dzięki za pomoc (IMG:style_emoticons/default/arrowheadsmiley.png) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 21:58 |