Wpis z mikrobloga

Mirki bardzo Was proszę o pomoc w #sql, pytanie jest naprawdę banalne, a mi pomoże bardzo dużo, a konkretnie #tsql

Mam stworzyć zapytanie, które wypisuje ilu pracowników zatrudnia każdy dział na każdym etacie i co więcej mam je nawet napisane tylko nie wiem dlaczego akurat w ten sposób! (bo niestety ja jego nie napisałem)

SELECT d.nazwa, p.stanowisko, COUNT(p.stanowisko) AS liczbaPracownikow

FROM testpracownicy.dbo.pracownicy AS p,

testpracownicy.dbo.dzialy AS d

WHERE p.iddzialu=d.iddzialu

GROUP BY d.nazwa, p.stanowisko

ORDER BY d.nazwa;


Tak wyglądają tabele z których korzystam:

SELECT * FROM pracownicy/dzialy

Tak wygląda rozwiązanie:

rozwiązanie

**Moje pytanie brzmi: dlaczego jest wykorzystywane p.iddzialu=d.iddzialu (w końcu id_działu jest tylko w tabeli działy, a po co takie sformułowanie w WHERE**
  • 2
@Requator: no i masz gównianą postać zapytania, bardziej czytelna byłaby z inner join, wtedy to co w where byłoby w warunku złączenia po on, dodatkowo grupujesz po nazwach nie id, zafałszuje to wynik, gdy będą te same nazwy

SELECT MAX(d.nazwa), MAX(p.stanowisko), COUNT(p.stanowisko) AS liczbaPracownikow
FROM testpracownicy.dbo.pracownicy AS p
INNER JOIN testpracownicy.dbo.dzialy AS d ON p.iddzialu=d.iddzialu
GROUP BY d.iddzialu, p.idstanowiska
ORDER BY d.iddzialu;