ACCESS podwajanie wyników kwerendy

Odpowiedz Nowy wątek
2017-12-06 19:41
0

Witam,
Prośba o pomoc w rozwiązaniu problemu. Problem opisałem w załączniku.
Z góry bardzo dziękuję.

Pozostało 580 znaków

2017-12-06 19:59
0

Skoro to jest Access to udostenij plik accdb/mdb...

Co do pytania to chyba zostaje to zrobić unionem, cos w ten deseń

SELECT USER.name, "Komputer" Typ, nrfabryczny FROM USER LEFT JOIN komputery
UNION ALL
SELECT USER.name, "Monitor", nrfabryczny FROM USER INNER JOIN monitory

Pozostało 580 znaków

2017-12-06 20:13
0

Masz źle zaprojektowaną bazę.
Co będzie jeśli do monitora i komputera będziesz musiał dodać myszkę albo klawiaturę ? utworzysz dwie nowe tabele "klawiatury" i "myszki" ??
Zakładając że jedno urządzenie ma jednego użytkownika to
widział bym trzy tabele. To tak w skrócie, bo nie chce mi się rysować diagramów

  1. Użytkownicy (UserID, FirstName, LastName .......)
  2. Urządzenia (DeviceId, UserID, CategoryId, Name, SerialNumber,.....)
  3. Kategorie urządzeń (CategoryId,Descrption, .....)
edytowany 5x, ostatnio: grzegorz_so, 2017-12-06 20:36

Pozostało 580 znaków

2017-12-06 20:36
0
Panczo napisał(a):

Skoro to jest Access to udostenij plik accdb/mdb...

Co do pytania to chyba zostaje to zrobić unionem, cos w ten deseń

SELECT USER.name, "Komputer" Typ, nrfabryczny FROM USER LEFT JOIN komputery
UNION ALL
SELECT USER.name, "Monitor", nrfabryczny FROM USER INNER JOIN monitory

Za pomocą Union all wynik jest ok, tylko wszystkie dane są wyświetlane w 2 kolumach (Użytkownik i Komputer). Chodziło mi bardziej o to, żeby były 3 kolumny (Użytkownik, Komputer, Monitor). Mając 2 komputery a 1 monitor, żeby w kolumnie Monitory był 1 rekord z danymi monitora a 2gi pusty.

Pozostało 580 znaków

2017-12-06 20:42
0

żeby w kolumnie Monitory był 1 rekord

w kolumnie nie możesz mieć rekordu
podaj jak przykładowo ma wyglądać wynik zapytania

edytowany 1x, ostatnio: grzegorz_so, 2017-12-06 20:45

Pozostało 580 znaków

2017-12-06 20:51
0

Użytkownik Komputer Monitor
Jan Kowalski Dell …. Del ….
Jan Kowalski HP ……
Adam Nowak Dell …. Del ….

screenshot-20171206205117.png

Pozostało 580 znaków

2017-12-06 20:54
0

Daj plik z danymi

Pozostało 580 znaków

2017-12-06 21:04
0

w jakim celu tworzysz dwie bezsensowne tabele "monitory" i "komputery" ???
czy nie lepiej zrobić z tego jedną tabele, dodając do niej pole typUrzadzenia, a w nim "monitor" albo "komputer", kiedyś może "myszka' albo "klawiatura" ??
wtedy w zapytaniu odpadnie Ci zupełnie niepotrzebny union
przemyśl jeszcze raz strukturę bazy, bo obecna ma wiele wad

edytowany 2x, ostatnio: grzegorz_so, 2017-12-06 21:11

Pozostało 580 znaków

2017-12-06 21:13
0

Baza w załączeniu.

Pozostało 580 znaków

2017-12-06 21:19
0
grzegorz_so napisał(a):

w jakim celu tworzysz dwie bezsensowne tabele "monitory" i "komputery" ???
czy nie lepiej zrobić z tego jedną tabele, dodając do niej pole typUrzadzenia, a w nim "monitor" albo "komputer", kiedyś może "myszka' albo "klawiatura" ??
wtedy w zapytaniu odpadnie Ci zupełnie niepotrzebny union
przemyśl jeszcze raz strukturę bazy, bo obecna ma wiele wad

Tak, jak pisałem wcześniej, dopiero zaczynam tą przygodę a muszę zrobić małą bazę sprzętu. Komputer i monitor to tylko 2 urządzenia z wielu. Zrobię tak, jak proponujesz, jakoś nie wpadłem na taki pomysł. Dziś już nie dam rady, ale jutro dam znać co z tego wyszło. Dziękuję bardzo.

życzę powodzenia :)) poprawnie zbudowana baza to podstawa.. a potem można się zastanawiać jak zbudować "query" w celu uzyskania takiego czy innego zestawu danych - grzegorz_so 2017-12-06 21:24

Pozostało 580 znaków

2017-12-06 21:31
2

jeśli będziesz przebudowywał bazę , to pole typUrzadznia zdefiniuj jako INT . Możesz np przyjąć że komputer ma wartość 1, monitor 2, itp itd ... a same opisy kategorii wstawić do tabeli słownikowej
1,komputer
2,monitor
3,myszka
4,klawiatura
5,drukarka
........

przy większych tabelach takie rozwiązanie jest wydajniejsze

edytowany 1x, ostatnio: grzegorz_so, 2017-12-06 21:36
i to jest poprawne rozwiązanie, tylko najpierw powinien być słownik a potem wstawianie danych do bazy - abrakadaber 2017-12-06 22:07
wystarczą prawidłowe klucze obce a baza sama przypilnuje właściwej kolejności wstawiania danych - grzegorz_so 2017-12-07 06:29

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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