MiroslavKisov

FindMyRide

Jun 16th, 2018
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 1.73 KB | None | 0 0
  1. USE RentACar
  2.  
  3. GO
  4. --Submit only the create fuction statement
  5. CREATE FUNCTION udf_CheckForVehicle(@townName NVARCHAR(50), @seatsNumber INT)
  6. RETURNS NVARCHAR(MAX)
  7. AS
  8. BEGIN
  9.     DECLARE @TownId INT;
  10.     DECLARE @OfficeId INT
  11.     DECLARE @OfficeName NVARCHAR(40);
  12.     DECLARE @ModelName NVARCHAR(50);
  13.     DECLARE @Result NVARCHAR(MAX)
  14.  
  15.     SET @TownId = (SELECT Id FROM Towns WHERE Name = @townName);
  16.  
  17.     SET @OfficeId = (SELECT TOP 1 o.Id
  18.                        FROM Towns AS t
  19.                   LEFT JOIN Offices AS o ON t.Id = o.TownId
  20.                   LEFT JOIN Vehicles AS v ON o.Id = v.OfficeId
  21.                   LEFT JOIN Models AS m ON v.ModelId = m.Id
  22.                   WHERE TownId = @TownId AND m.Seats = @seatsNumber
  23.                   ORDER BY o.Name);
  24.  
  25.     SET @OfficeName = (SELECT TOP 1 o.Name
  26.                          FROM Towns AS t
  27.                     LEFT JOIN Offices AS o ON t.Id = o.TownId
  28.                     LEFT JOIN Vehicles AS v ON o.Id = v.OfficeId
  29.                     LEFT JOIN Models AS m ON v.ModelId = m.Id
  30.                         WHERE TownId = @TownId AND m.Seats = @seatsNumber AND o.Id = @OfficeId
  31.                      ORDER BY o.Name);
  32.  
  33.     SET @ModelName = (SELECT TOP 1 m.Model
  34.                         FROM Towns AS t
  35.                    LEFT JOIN Offices AS o ON t.Id = o.TownId
  36.                    LEFT JOIN Vehicles AS v ON o.Id = v.OfficeId
  37.                    LEFT JOIN Models AS m ON v.ModelId = m.Id
  38.                        WHERE TownId = @TownId AND m.Seats = @seatsNumber AND o.Name = @OfficeName
  39.                     ORDER BY o.Name)
  40.     IF(@ModelName IS NULL)
  41.     BEGIN
  42.         SET @Result = 'NO SUCH VEHICLE FOUND'
  43.         RETURN @Result
  44.     END
  45.  
  46.     SET @Result = @OfficeName + ' - ' + @ModelName  
  47.  
  48. RETURN @Result
  49. END
Advertisement
Add Comment
Please, Sign In to add comment