1

Temat: Problem z view

Dzień dobry

Mam mały problem z korzystaniem z "create view". utworzyłem widok poprzez zapytanie select łączące kilka tabel. Niestety jeżeli któreś pole w jednej z tabel jest puste (nie zawiera danych) utworzony widok nie zawiera danych. Jak to obejść, nie wszystkie pola są wymagane do wypełnienia. co zrobić aby widok gromadził dane a tam gdzie pole jest puste w widoku także było puste pole.

____________
CREATE OR REPLACE VIEW widok_1 AS
select sl_kraj.nazwa as kraj, sl_kraina.nazwa as kraina, sl_wojew.nazwa as wojew, sl_powiat.nazwa as powiat, region.miejscowosc as miejscowosc, region.uroczysko as uroczysko, stanowisko.nazwa as nazwa_stanowiska, stanowisko.wspolrzedne as wspolrzedne, stanowisko.rzezba as opis_rzezby, stanowisko.npm as npm, stanowisko.npw as npw, stanowisko.komentarz as kom_stanowisko, stanowisko.data_odkr as data_odkr_stanowiska, sl_typ_stan.nazawa as typ_stanowiska, sl_przed_czas.nazwa as przedzial_czasowy, sl_odkrycie.nazwa as odkrycie_stanowiska, sl_graf.nazwa as zdjecia, sl_mapa.nazwa as mapa, bibliotek_pic.opis as opis_zdjecia
from
sl_kraj, sl_kraina, sl_wojew, sl_powiat, stanowisko, region, biblioteka_pic, sl_graf, sl_typ_stan, sl_przed_czas, sl_mapa, sl_odkrycie
where
sl_kraj.id=region.kraj_key and sl_kraj.id=sl_wojew.kraj_key and sl_kraj.id=sl_kraina.kraj_key and sl_wojew.id=region.wojew_key and sl_wojew.id=sl_powiat.wojew_key and sl_kraina.id=region.kraina_key and sl_powiat.id=region.powiat_key and region.id=stanowisko.region_key and stanowisko.id=biblioteka_pic.stanowisko_key and biblioteka_pic.graf_key=sl_graf.id and sl_typ_stan.id=stanowisko.typ_stan_key and sl_przed_czas.id=stanowisko.przed_czas_key and sl_mapa.id=stanowisko.mapa_key and sl_odkrycie.id=stanowisko.odkrycie_key;
_________________
jako uzupełnienie pytania dodam że chodzi o klucze obce. W tym przypadku tabela biblioteka_pic (łącząca) jest pusta. Łączy tabele stanowiska i sl_graf.

Ostatnio edytowany przez lanczont (2012-02-08 08:23:11)

2

Odp: Problem z view

To nie wina widoków po prostu musisz stosować do łączenia tabel klauzuli left join
dla 2 tabel powinno to wyglądać tak
select *
from sl_graf s
left join biblioteka_pic b on s.id=b.graf_key
To tylko przykład ilustrujący problem. Jesli tabela biblioteka_pic nie będzie miała rekordów to tabela sl_graf po lewej stronie jako chroniona zwróci rekordy.

Mam nadzieje że oto Ci chodziło