Zapytanie sql

0

Witam wszystkich

Mam takie zapytanie:

select ComputerName as Nazwa_Komputera, IPAddress, MACAddress, TAssetsPropertyValue.PropertyValue AS Serial,TAssetsPropertyValue.PropertyValue AS Model, TUserField.FieldValue0 AS Imię, TUserField.FieldValue1 AS Nazwisko, TUserField.FieldValue2 AS Departament_Wydział, TUserField.FieldValue3 AS Telefon_wew, TUserField.FieldValue4 AS Pokój 
from TAssetsPropertyValue 
LEFT OUTER JOIN TComputer ON (TComputer.TComputer_PK = TAssetsPropertyValue.TComputer_FK ) 
LEFT OUTER JOIN TUserField ON (TComputer.TComputer_PK =TUserField.TComputer_FK) 
where TAssetsProperty_FK = 4

W takim przypadku w kolumnach TAssetsPropertyValue.PropertyValue AS Serial, TAssetsPropertyValue.PropertyValue AS Model wyświetl mi się wartość TAssetsProperty_FK = 4. Chciałbym aby w kolumnie TAssetsPropertyValue.PropertyValue AS Serial wyświetlało wartość TAssetsProperty_FK = 4, natomiast dla kolumny TAssetsPropertyValue.PropertyValue AS Model wyświetlało wartość TAssetsProperty_FK = 5.

Z góry dziękuje za pomoc.

0

No to zacznijmy od tego że nie możesz przefiltrować tylko po 4, ale też po 5. Żeby Jako Model wyświetlać coś z innej kolumny jeśli TAssetsProperty_FK = 5, a dla jnnej jak 4, użyj case. Znajdziesz miliony przykładów w sieci.

0

Dzięki za naprowadzenie.
Zdaję sobie sprawę że muszę również używać wartości TAssetsProperty_FK = 5.
Poczytałem trochę o warunku w sql-u. Z tego wynika, że powinienem zmontować i wstawić coś takiego (teoretyzuje):

 
   case
            when TAssetsProperty_FK = 5 then TAssetsPropertyValue.PropertyValue AS Model =  TAssetsProperty_FK = 5
            when TAssetsProperty_FK = 4 then TAssetsPropertyValue.PropertyValue AS Serial =  TAssetsProperty_FK = 4
   end

oczywiście takie coś nie ma racji bytu....

i nie wiem co dalej robić, a raczej pisać.

0

Składnia jest taka

case <testowana_kolumna>
when <wartość_kolumny> then <zwracana_wartość: kolumna lub stała wartość>
else <jeśli_żaden_when nie zadziała> end

lub

case
when <warunek 1> then <j.w.>
when <warunek 2> then <j.w.>
else <jeśli_żaden_when nie zadziała> end

Ty chcesz mieć dwie kolumny, przy czym w pierwszej wartość z PropertyValue jeśli coś = 5, a w drugiej wartość kolumny jeśli coś = 4.

select
case when _FK = 4 then PropVal else null end as Serial,
case when _FK = 5 then PropVal else null end as Model,
...
from ...

0

Dziękuje bardzo za szybką i sprawną odpowiedź.

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