SQL - podzapytanie w klauzuli select

Odpowiedz Nowy wątek
2018-06-12 22:20

Rejestracja: 1 rok temu

Ostatnio: 1 rok temu

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.

Pozostało 580 znaków

2018-06-12 23:02

Rejestracja: 17 lat temu

Ostatnio: 7 godzin temu

coś takiego:

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

Pozostało 580 znaków

Odpowiedz

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