MS SQL - group by

0

Jak połączyć tabele, jeżeli w jednej z nich muszę zrobić takie polecenie:

SELECT Wypozyczenia.IdSamochodu, Count(*) AS LiczbaWypozyczen
FROM Wypozyczenia
GROUP BY idSamochodu
ORDER BY LiczbaWypozyczen DESC;

i chcę do tego selecta dołożyć jeszcze 2 kolumny z drugiej tabeli i jedną z 3.
Chcę żeby była ilość wypożyczeń dla każdego idSamochodu i posortowane wdg właśnie ilości wypożyczeń oraz kolumny nrRej, Marka i Typ.

Mam taką relację - user image

1
SELECT * FROM
(
   SELECT Wypozyczenia.IdSamochodu, Count(*) AS LiczbaWypozyczen
   FROM Wypozyczenia
   GROUP BY idSamochodu
) AS T JOIN
Samochody S ON S.IdSamochodu = T.IdSamochodu JOIN
MarkiSamochodow MS ON MS.Id = S.idMarki 

Order robisz sam.

0

SELECT * FROM
(
SELECT Wypozyczenia.IdSamochodu, COUNT(*) AS LiczbaWypozyczen
FROM Wypozyczenia
GROUP BY idSamochodu
) AS T JOIN
Samochody S ON S.IdSamochodu = T.IdSamochodu JOIN
MarkiSamochodow MS ON MS.idMarki = S.idMarki
ORDER BY LiczbaWypozyczen DESC

Problem jest taki, że chciałbym tylko kolumny idSamochodu, LiczbaWypozyczen, nrRej, Typ i NazwaMarki. Po jednej (bo jakieś duble mi się porobiły :)
user image

0

No to zamień select * na te kolumny które chcesz, myślałem że to jest oczywiste.

0

Tylko wtedy jakieś errory mi wychodzą, że niby zła składnia:

Msg 156, Level 15, State 1, Line 3
Incorrect syntax near the keyword 'SELECT'.
Msg 102, Level 15, State 1, Line 6
Incorrect syntax near ')'.

0

To pokaż coś tam stworzył.

0

SELECT idSamochodu, nrRej, NazwaMarki, Typ
(
SELECT Wypozyczenia.IdSamochodu, COUNT(*) AS LiczbaWypozyczen
FROM Wypozyczenia
GROUP BY idSamochodu
) AS T JOIN
Samochody S ON S.IdSamochodu = T.IdSamochodu JOIN
MarkiSamochodow MS ON MS.idMarki = S.idMarki
ORDER BY LiczbaWypozyczen DESC

0

A gdzie masz from?
i dodaj też aliasy bo będziesz miał error abmigous column np T.IdSamochodu

0

tylko nie bardzo wiem gdzie ten from dać, próbowałem po AS T i przed ORDER i nadal mi nie działa :/

1

Bazując na tym co teraz masz to mniej więcej tak:

SELECT t.idSamochodu, s.nrRej, ms.NazwaMarki, s.Typ
  FROM
(
   SELECT Wypozyczenia.IdSamochodu, COUNT(*) AS LiczbaWypozyczen
   FROM Wypozyczenia
   GROUP BY idSamochodu
) AS T JOIN
Samochody S ON S.IdSamochodu = T.IdSamochodu JOIN
MarkiSamochodow MS ON MS.idMarki = S.idMarki
ORDER BY T.LiczbaWypozyczen DESC
0

DZIĘKI :)

Tam w select musiałem tylko dopisać t.LiczbaWypozyczen

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