SQL wyświetlenie wyników - help :|

0

Dzień dobry,

Mam takie pytanie jak zrobić takie zapytanie aby np z tabeli people takiej jak w przykładzie po pierwsze wyświetlic sobie Name, Age i tutaj jeżeli nie ma wieku to wyświetlić myślnik. I teraz dolaczamy powiedzmy do nich ich spacery w tygodniu zgodnie z Id i godzina spaceru i chcemy wyświetlic także Ilosc spacerów i ostatnia godzinę odbytego spaceru. Jak to zrobic? :(

People
PeopleID Name Age

Walk
WalkID Date PeopleID

O ile się nie mylę to podstawa wygląda tak

Select People.Name,Age, COUNT(W.WalkId) AS IloscSpacerow
FROM People
INNER JOIN Walk W ON W.PeopleId= People.PeopleID
Group by Name,Age
Order by IloscSpacerow DESC

I to działa tylko tak nie wiem jak:

  1. zamiast NULL w age wyswietlic myślnik
  2. wyświetlić ostatnia date spaceru
0

Taka uwaga (może nie do końca odpowiedź na twoje pytanie, ale może Ci się przydać).

Zamiast bawić się w podmiany pustych wartości na coś innego, czy nie lepiej ustalić na etapie dodawania danych, żeby (jeśli nie zostanie podana żadna wartość) została wstawiona wartość domyślna - czyli w twoim przykładzie myślnik. Więcej do poczytania : https://www.w3schools.com/sql/sql_default.asp

1
cerrato napisał(a):

Taka uwaga (może nie do końca odpowiedź na twoje pytanie, ale może Ci się przydać).

Zamiast bawić się w podmiany pustych wartości na coś innego, czy nie lepiej ustalić na etapie dodawania danych, żeby (jeśli nie zostanie podana żadna wartość) została wstawiona wartość domyślna - czyli w twoim przykładzie myślnik. Więcej do poczytania : https://www.w3schools.com/sql/sql_default.asp

Imo jeżeli to ma byc pusta wartość to chyba lepiej trzymać nulle. Ktoś kto nie bedzie wiedział ze wartością domyślna w tej tabeli jest myślnik dla pustych elementów i bedzie chciał skorzystać z np IsNull to dostanie błędne wyniki. A tu wystarczy prostego CASE’a napisać

1

Super kolega MatD pomogł z null się uporałem po naprowadzeniu :)

Ostatnia data ... wystarczylo MAX :D Finalowo wyglada to tak np.

Select FirstName,LastName ,case when Age IS NULL then '1' else Age end,
COUNT(idInvoices) AS iloscFaktur, MAX(I.InvoiceDate)
FROM Customer
INNER JOIN INVOICE I ON I.IdCustomer=Customer.Id
GROUP BY Customer.FirstName,LastName,Age

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