[SQL] [Access] Dopisanie danych z podziałem na przedziały

0

Mam problem.
Potrzebuję dopisać do tabeli trochę danych. W związku z tym, że ciężko mi jest ubrać to w słowa - posłużyłem się przykładem w Excelu.

Ale spróbuję także w skrócie napisać o co mi chodzi. Otóż mam tabelę produktów (unikatową). I do tej tabeli chciałbym dopisać trochę danych.
Na początek chciałbym dopisać dane z podziałem na przedziały (przedziały w kolumnach).

Normalnie w SQLu zrobiłbym tak, że spiąłbym to szeregiem LEFT JOIN'ów. Niestety Access nie dopuszcza takiej możliwości (trzeba by do każdego left joina tworzyć subselecta, gdzie przy powiedzmy 10-15 kolumnach traci to zupełnie sens - można się całkowicie pogubić).

Pytanie jak to (dość prosto) rozwiązać?

Gdyby coś było niejasne to postaram się wytłumaczyć lepiej.

Z góry dzięki!

0

Ile masz tych zakresów ? Zakładając, że masz 4 jak w przykładzie zrobił bym po najniższej linii oporu 4 kwerendy aktualizujące dla każdego zakresu ot i tyle.

Zresztą poprawna tabela powinna wyglądać jak ta w środku, a wynik powinieneś przedstawiać w kwerendzie z Pivotem jak na końcu pokazałeś. Inaczej rezerwujesz miejsce na pola w których nic nie wprowadzasz.

0

Oczywiście mogę do tego zadania wykorzystać Pivot Table w Excelu z danych wyjściowych. Jednak nie umiem tego przejść w Accessie (straszna niewygoda left joinów).
Niestety tabelę, którą chcę dołączyć jest jedną z 4 (każda ma inne zakresy). Szukam jakiegoś prostszego sposobu niż robienie kwerendy dla każdego zakresu...chyba, że nie ma innej opcji.

Myślałem, że może mógłbym to zrobić w Excelu za pomocą "Sumy warunków", ale rozwiązanie to jest strasznie "ciężkie".

1
aleks.mm napisał(a):

Oczywiście mogę do tego zadania wykorzystać Pivot Table w Excelu

Nie to miałem na myśli. W Accessie też możesz robić kwerendy typu Pivot. Będziesz miał dokładnie taki efekt jak w excelu pokazałeś jako finalny. I imho to będzie najbardziej prawidłowe rozwiązanie. ;)

0

Ok, poczytam.
Ale jak połączyć te dane ze sobą, bo w tabelach, które chcę dołączyć indeksy występują w podziale na zakresy, które chciałbym, aby występowały w kolumnach..czy to rozwiązanie daje taką możliwość?

---EDIT---
Udało mi się osiągnąć TRAMSFORM/PIVOT ten efekt dla jednej tabeli, którą chcę dołączyć, ale niestety mam problem z dołączeniem takiej PT do tabeli bazowej. Nie jest to możliwe?

PS. Czy da się wstawić więcej wartości po TRANSFORM? Chodzi mi o to, żeby na tych samych przedziałach zsumował mi wartość i sztuki.

0

Możesz przeprowadzać wszelkie operacje związane z "group by" czyli liczyć/sumować/wprowadzać wyrażenia etc. I możesz normalnie łączyć tabele jak w kwerendzie zwykłej ... czyli 1 tabela to ta bazowa 2 tabela to ta z przedziałami i tylko ustawiasz odpowiednio pola (co ma być jako wiersz co jako kolumna a co ma być jako wartości).

0

Ale powiedzmy, ze:

  1. Chcę dołączyć left joinem powstałą PivotTable do tabeli (zwykłej) bazowej - można?
  2. Chcę z PivotTable (TRANSFORM/PIVOT) stworzyć tabelę (SELECT * INTO ABC FROM XXX) - da się?

Chodzi mi o to jak dołączyć do tabeli "bazowej" 4 kolejne tabele (widoki) stworzone za pomocą TRANSFORM / PIVOT, bo wydaje mi się, że niestety się nie da..

Jak rozumiem po poleceniu TRANSFORM mogę sumować tylko jedną wartość, prawda?

0

Albo się do końca nie rozumiemy albo idziesz na około.

Ad 1) Tabela bazowa powina być Twoją główną tabelą w kwerendzie gdzie robisz pivota ... i tam sobie LEFT Joinem dodajesz ta tabele z zakresami.

Ad ... " jak dołączyć do tabeli "bazowej" 4 kolejne tabele (widoki)" ... Najpierw sobie połącz te 4 widoki przy pomocy Union i wtedy taka kwerende (pelen set danych) użyj w pivocie (tym co opisalem wyżej) ... Ty robisz to od du_y strony, że tak powiem. ;)

Ad 2) Szczerze mówiąc nie sprawdzałem czy da sie kwerende z pivotem wstawić insertem ... ale pewnie tak czemu nie (choć dalej nie wiem czemu chcesz te wyniki zapisywać jeszcze w tabeli) ;)

Edit: Generalnie Pivot to ostagni krok :)

0

Właśnie cały "widz" polega na tym, że nie do końca wiem jak je połączyć, skoro tylko jedna tabela jest unikatowa.
W sensie sam pivot sprawia, że mam unikatowe indeksy (reszta pokazywana w kolumnach). I wtedy mógłbym LEFT JOINować. Chyba, że coś źle rozumiem.

0

To jeszcze (ostatni) raz jak .. na rowie:

  1. Stworz kwerende "złączająca" (nie wiem jak to sie zwie po Polsku - w eng nazywa się Union) coś ala:
select indeks, wartosc, przedzial from Tab1
Union
select indeks, wartosc, przedzial from Tab2
Union
select indeks, wartosc, przedzial from Tab3
Union
select indeks, wartosc, przedzial from Tab4
  1. Stworz kolejna kwerende i dodaj do niej glowna tablice gdzie masz Indeks i opis i dodaj do niej joinem czy left joinem czy jakkolwiek chcesz ... przed chwila stworzona kwerende (patrz pkt 1)

  2. Zrob z kwerendy z pk2 pivota

  3. Ciesz sie wynikami

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