Witam serdecznie,
chciałabym zopymalizować zapytania SQL, działają mi ale ilość ich spowalnia działanie aplikacji. Chciałabym je wszystkie razem połączyć. Wykonanie jednego dużego zapytania , a wykonie oddzielne ich wszystkich wydłuża wykonanie modyfikacji jednej kolumny.
Moje zapytania przedsawiają się nasępująco (wersja pod Access):
stmt.executeUpdate("UPDATE tabela_A, statystyka SET statystyka.blad = 'brak: kolumna_1; '
WHERE ( statystyka.kolumna='kolumna_1' AND statystyka.tabela='tabela_A' ) AND tabela_A.opis_bledow = 'brak: kolumna_1; ';");
stmt.executeUpdate("UPDATE tabela_A, statystyka SET statystyka.blad = 'brak: kolumna_2; '
WHERE ( statystyka.kolumna='kolumna_2' AND statystyka.tabela='tabela_A' ) AND tabela_A.opis_bledow = 'brak: kolumna_2; ';");
stmt.executeUpdate("UPDATE tabela_A, statystyka SET statystyka.blad = 'brak: kolumna_3; '
WHERE ( statystyka.kolumna='kolumna_3' AND statystyka.tabela='tabela_A' ) AND tabela_A.opis_bledow = 'brak: kolumna_3; ';");
tabela TABELA_A przedstawia się następująco
ID_TABELA_A | OPIS_BLEDOW | KOLUMNA_1 | KOLUMNA_2 | KOLUMNA_3 |
---|---|---|---|---|
1 | brak: kolumna_1; brak: kolumna_3; | - | b | - |
2 | brak: kolumna_3; | a | b | - |
3 | brak: kolumna_1; | - | b | c |
tabela satystyka przedsawia się w następujący sposób:
blad | kolumna | tabela | ilosc |
---|---|---|---|
kolumna_1 | tabela_A | ||
kolumna_2 | tabela_A | ||
kolumna_3 | tabela_A |
wersja pod Oracle:
UPDATE statystyka
SET statystyka.blad ='brak: kolumna_1; '
WHERE ( statystyka.kolumna='kolumna_1' AND statystyka.tabela='tabela_A' ) AND
EXISTS (
SELECT 1
FROM tabela_A
WHERE tabela_A.opis_bledow like '%kolumna_1;%'
);
UPDATE statystyka
SET statystyka.blad ='brak: kolumna_2; '
WHERE ( statystyka.kolumna='kolumna_2' AND statystyka.tabela='tabela_A' ) AND
EXISTS (
SELECT 1
FROM tabela_A
WHERE tabela_A.opis_bledow like '%kolumna_2;%'
);
UPDATE statystyka
SET statystyka.blad ='brak: kolumna_3; '
WHERE ( statystyka.kolumna='kolumna_3' AND statystyka.tabela='tabela_A' ) AND
EXISTS (
SELECT 1
FROM tabela_A
WHERE tabela_A.opis_bledow like '%kolumna_3;%'
);
Chciałabym zrobić tak, aby jednym zapytaniem SQL uzupełniało mi w tabeli *statystyka * , 3 wartości :
statystyka.blad ='brak: kolumna_1; '
gdy dla tabeli *tabela_A * w kolumnie *OPIS_BLEDOW * jeśli będzie wartość 'brak: kolumna_1; '
statystyka.blad ='brak: kolumna_2; '
gdy dla tabeli *tabela_A * w kolumnie OPIS_BLEDOW jeśli będzie wartość 'brak: kolumna_2; '
statystyka.blad ='brak: kolumna_3; '
gdy dla tabeli tabela_A w kolumnie OPIS_BLEDOW jeśli będzie wartość 'brak: kolumna_3; '
Próbowałam wykonać takie sprawdzenie (wersja pod Access) , ale mi to działanie nie działało prawidłowo :( :
stmt.executeUpdate("UPDATE tabela_A, statystyka SET statystyka.blad =
IIf (statystyka.kolumna ='kolumna_1' AND tabela_A.opis_bledow = '*kolumna_1*', '' 'brak: kolumna_1; ') &
IIf (statystyka.kolumna ='kolumna_2' AND tabela_A.opis_bledow = '*kolumna_2*', '' 'brak: kolumna_2; ') &
IIf (statystyka.kolumna ='kolumna_3' AND tabela_A.opis_bledow = '*kolumna_3*', '' 'brak: kolumna_3; ')
WHERE statystyka.tabela='tabela_A'; ");
bardzo uprzejmie prosiłabym o wskazówkę pod Oracle, ( do access właśnie mi się skończyła licencja :( )
Jak wykonać jednym zapytaniem, edycje w tabeli *statystyka * dla kolumny *blad * Jeśli znajdzie np wartość brak: kolumna_1; w kolumnie OPIS_BLEDOW i zapisało tą informację dla kolumny blad * w postaci * 'brak: kolumna_1; '