SQL - podzapytanie w klauzuli select

SQL - podzapytanie w klauzuli select
A9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
0

Cześć,
nie potrafie sformułować poprawnego zapytania w celu wyciągnięcia danych w określonej formie. Już tłumaczę o co mi chodzi:
Przykładowo:

Tabela zawiera nastepujące atrybuty:
Id, Id_Wiadomosci, Rodzaj, Opis

Atrybut rodzaj zawiera zawsze dwie wartości i jest to 'mailowa', 'smsowa', tzn, że każdy Id_Wiadomości powtarza się w tabeli dwa razy przy czym za każdym razem jest zdefiniowana dla innego rodzaju wiadomości z innym opisem. Poniżej podaję przykład

Id| Id_Wiadomosci | Rodzaj | Opis
1 | 1 | mailowa| treść wiadomosci
2 | 1 | smsowa| tresć wiadomosci
3 | 2 | mailowa| treść wiadomosci
4 | 2 | smsowa| treść wiadomosci

Z tabeli tej potrzebuje wyciagnac nastepujące informacje w następującej formie:

Id_Wiadomosci | treść wiadomości mailowej | treść wiadomości smsowej

Polecono mi wykonać to zapytanie za pomocą podzapytań, niestety nie potrafie odpowiednio ograniczyć swojego podzapytania co prowadzi do błędu.
Próbowałam wyciągnąc dane następującym poleceniem:

select Id_Wiadomosci, (select Opis where rodziaj='mailowa') as 'treść wiadomosci mailowej', (select Opis where rodziaj='smsowa') as 'treść wiadomosci smsowej' from Wiadomosci group by Id_Wiadomosci

Będe bardzo wdzięczna za pomoc.

PA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3891
1

coś takiego:

Kopiuj
select
    id as idwiadomosci
    ,(select opis from wiadomosci where id_wiadomosci=w.id and rodzaj = 'mail') trescmaila
    ,(select opis from wiadomosci where id_wiadomosci=w.id and rodzaj = 'sms') trescsms
from (select distinct 
            id_wiadomosci as id
        from
            wiadomosci) as w

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.