CASE w oracle SQL

K1
  • Rejestracja:około 7 lat
  • Ostatnio:prawie 5 lat
  • Postów:24
0

cześć,
Mam pewnie prostą sprawę do realizacji ale nie wiem jak dokładnie to ograć SQLem. Będę operował na fikcyjnych tabelach zeby dobrze opisać problem.
Powiedzmy ze mam tabele KONTRAKTY z kluczem głownym ID. do tej tabeli muszę dołożyć jedną kolumne i uzupełnić ją zerami lub jedynkami w zależności od tego czy pewne zapytanie (bazujące tez na tabeli KONTRAKTY i na kilku innych) zwróci jakąkolwiek wartość czy nie. A więc jezeli moje zapytanie zwroci wartość to wtedy w nowej kolumnie tabeli KONTRAKTY dla podanego ID zwracam 1 a jeżeli takiego ID nie będzie w wyniku zapytania to do takiego ID w kolumnie będzie wartość 0 (zero). Zapytanie bazuje również na tej tabeli KONTRAKTY. miałoby to wyglądać tak że tabela KONTRAKTY jest tabelą do ktorej doklejam te zera lub jedynki w zależności czy zapytanie (np select * from KONTRAKTY join KLIENCI on ID=ID join FAKTURY on ID_F = ID_F where coś tam coś tam....) zwróci wartość czy nie

czy tu jakis CASE WHEN ma byc zastosowany czy jak?
Z góry dzieki za info

Marcin.Miga
  • Rejestracja:prawie 17 lat
  • Ostatnio:dzień
  • Postów:2792
0

Nie potrzebujesz żadnego CASE. Dokładając kolumnę dajesz wartość domyślną 0, a następnie robisz UPDATE na ych rekordów, które są w drugiej tabeli.

PD
Zbiegliśmy się odpowiedzą w podobnym czasie ;p
PD
  • Rejestracja:około 7 lat
  • Ostatnio:około 4 lata
  • Postów:59
0

Dołóż po prostu kolumnę, wypełnij ją zerami a następnie zupdatuj na 1 te wiersze gdzie zapytanie, ktore Cię interesuje coś zwraca ( w tym wypadku użyj Twojego zapytania jako podzapytanie i powiąż z tabelą kontrakty - w przykładzie wiązanie to warunek K.ID=KON.ID)
Przykładowo:
UPDATE KONTRAKTY k SET k.NEW_COLUMN = 1 WHERE EXISTS
( select * from KONTRAKTY KON join KLIENCI on kon.ID=ID join FAKTURY on ID_F = ID_F where K.ID=KON.ID AND reszta warunków podzapytania)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.