Zapytanie wypisyjące obok siebie wartości tego samego pola

0

Hej!

Mam pewien kłopot z napisaniem zapytania. Mam tabele składającą się z pól id_lasu,wojewodztwo, rodzaj_lasu (id_lasu to identyfikator lasu,wojewodztwo to województwo na terenie którego znajduje się las, a rodzaj_lasu to liściasty lub iglasty). Teraz chciałbym napisać takie zapytanie które zwróci dla wszystkich lasów w województwie lubelskim i mazowieckim zwróci czy w danym lesie jest dane drzewo i to ma wyglądać tak jak coś takiego
id_lasu lisciasty iglasty
1 jest jest
2 jest brak
3 brak brak

SELECT id_lasu, rodzaj_lasu AS lisciasty, rodzaj_lasu AS iglasty FROM tabela WHERE wojewodztwo='lubelskie' OR 'mazowieckie' 

.
Generalnie mam problem z zapisem dwóch pól z rodzajem_lasu

0

Ja trochę nie ogarniam w takim razie. Co jest tu kluczem? Bo chyba nie id_lasu skoro występuje więcej niż raz?
Mniejsza z tym: musisz, jak nie trudno zgadnąć, zrobić złączenie tabeli z samą sobą, tylko że skoro masz tu klucz złożony to będzie to trudniejsze, bo normalnie złączałbyś where p.id > d.id tak żeby wykluczyć powtórzenia.

0

Ok, dzięki. Jeszcze jedno pytanie chcę zwrócić województwo o największej liczbie lasów dębowych. Moja propozycja zwraca tę największą liczbę

 select max(najw) from(select count(wojewodztwo)as najw from tabela where brzoza='jest' group by wojewodztwo)

i nie wiem za bardzo jak zwrócić nazwę województwa o największej liczbie

0
SELECT TOP 1 COUNT(wojewodztwo) AS najw, wojewodztwo FROM tabela WHERE brzoza='jest' GROUP BY wojewodztwo order by COUNT(wojewodztwo) desc
0

OK, ale w sql oraclowym nie ma polecenia TOP (wyrzuca mi błąd)

0
SELECT najw, wojewodztwo from (SELECT COUNT(wojewodztwo) AS najw, wojewodztwo FROM tabela WHERE brzoza='jest' GROUP BY wojewodztwo ORDER BY COUNT(wojewodztwo) DESC) WHERE ROWNUM < 2
0

Dzięki, wielkie!

0

a ta mi się przypomniało jeszcze, czy w sql jest możliwość zmiany wartości pola podczas wyświetlania wyniku selecta np. w moim przykładzie mamy brzoza - 'jest' a chcę aby w wyniku zapytania zwrócona była wartość istnieje

0

CASE
albo
DECODE

0

OK, ale czy jest może jeszcze inne rozwiązanie bardziej sql'owe (case to jednak wyrażenie tsql)

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