Grzegorz Nowak

Grzegorz Nowak Kartografia/GIS

Temat: Kopiowaie, wypełnianie tabel w nietypowym przypadku

Witam,

Mam prośbę o pomoc napisaniu skryptu (kwerendy do accessa). Nie musi to być w jednym poleceniu oczywiście.
Pokrótce przedstawię na czym polega problem:

Jak widać na załączonym obrazku mam dwie tabele OT_PTLZ_A (gdzie są informacje o tym jaki jest las) i OT_PTLZ_A_GD (gdzie na podstawie ID z pierwszej tabeli wypełniane są informacje o gatunku drzew).

Chciałbym po pierwsze skopiować ID z tabeli OT_PTLZ_A i wkleić do tabeli OT_PTLZ_A_GD tyle, że jeśli w pierwszej tabeli "KATEGORIA" jest I lub L to ID kopiujemy raz, jeśli M to dwa razy to samo ID.

Następnie wypełnić tabelę OT_PTLZ_A_GD danymi w następujący sposób:
-jeśli w tabeli OT_PTLZ_A "KATEGORIA" = I wtedy w tabeli OT_PTLZ_A_GD w polu dla danego ID gatunekDrzew = Ssn
-jeśli w tabeli OT_PTLZ_A "KATEGORIA" = L wtedy w tabeli OT_PTLZ_A_GD w polu dla danego ID gatunekDrzew = Brz
-jeśli w tabeli OT_PTLZ_A "KATEGORIA" = M wtedy w tabeli OT_PTLZ_A_GD w polu gatunekDrzew dla jednego ID wpisujemy Ssn, dla drugiego Brz
-wartości wypełniamy jeśli pole gatunekDrzew w tabeli OT_PTLZ_A_GD jest puste (może się zdarzyć, że będzie już uzupełnione)


Obrazek


Czy jest możliwość wykonania takiego zapytania?
Z góry dziękuję..
Marcin Mackiewicz

Marcin Mackiewicz Programista JAVA, RS
Adware Polska

Temat: Kopiowaie, wypełnianie tabel w nietypowym przypadku

Niestety nie podam Tobie dokładnie zapytania dla Access'a bo tego ostatni raz używałem w liceum.
Ale jeżeli wiesz jak sporządzać zapytania to:

1. Załóż tymczasową tabelę np 'drzewa'
CREATE TABLE drzewa(
id VARCHAR(1),
drzewo VARCHAR(3)
);
INSERT INTO drzewa VALUES ('I', 'Ssn');
INSERT INTO drzewa VALUES ('L', 'Brz');
INSERT INTO drzewa VALUES ('M', 'Ssn');
INSERT INTO drzewa VALUES ('M', 'Brz');

2. Teraz zrób zapytanie które wypełni tabelę OT_PTLZ_A_GD danymi id, gatunekDrzewa na podstawie złączenia tabeli OT_PTLZ_A z tabelą drzewa po kolumnie kategoria. Odpowiednie wiersze dla kategori M powielą ci się za względu na zawartość tymczasowej tabelki. W SQL'u (abstrahując którym):
INSERT INTO OT_PTLZ_A_GD (id, gatunekDrzew) 
SELECT a.id, t.drzewo FROM OT_PTLZ_A a JOIN drzewa t ON a.kategoria = t.id;

Może to cię naprowadzi na rozwiązanie twojego problemu :)

Jeżeli zakładasz, że część danych jest wypełniona to jeżeli są poprawne względem tabeli źródłowej to na Twoim miejscu usunął bym zawartość tabli do której chcesz wpisywać (albo sporządził bym kopie) a następnie wypełnił z automatu wartościami.Marcin Mackiewicz edytował(a) ten post dnia 24.11.12 o godzinie 01:00

Następna dyskusja:

Jedno zapytanie do kilku ta...




Wyślij zaproszenie do