På ett företag är de anställdas lön direkt avhängig av deras ålder. Lönerna definieras i en tabell som innehåller åldersintervallen (i hela år), som ser ut som: ngt i stil med kanske kan fungera: Jag skulle nog gjort såhär, borde vara snabbare än Pontus förslag: Har för mig att det finns någon databas där man kan göra joins på helt godtyckliga villkor. Då borde det gå att lösa med:Knivig sqlfråga
tbl_salary
----------
SalaryID INT PRIMARY KEY,
LowerAgeBound INT,
UpperAgeBound INT,
Salary INT
Personalen lagras i följande tabell
tbl_employee
------------
EmployeeID INT PRIMARY KEY,
EmployeeName VARCHAR(100),
BirthDate SMALLDATETIM
Skriv en SQL-fråga som listar alla anställda, och deras lön. Sortera i fallande löneordning.
Nån som kan hjälpa mig med detta?Sv: Knivig sqlfråga
select EmployeeName, DATEDIFF(Year, BirthDate, getdate()) as Age,
(select Salary from tbl_salary where emp.Age between LowerAgeBound and UpperAgeBound) as Salary
from tbl_employee emp
order by Salary DESC
Det är långt ifrån en snabb lösning men tankesättet funkar kanske?Sv: Knivig sqlfråga
SELECT EmployeeID, EmployeeName, Salary FROM tbl_employee, tbl_salary WHERE DATEDIFF(Year, BirthDate, getdate()) BETWEEN LowerAgeBound AND UpperAgeBound
/JohanSv:Knivig sqlfråga
SELECT EmployeeID, EmployeeName, Salary FROM tbl_employee LEFT JOIN tbl_salary ON DATEDIFF(Year, BirthDate, getdate()) BETWEEN LowerAgeBound AND UpperAgeBound