USE [Database]

IF OBJECT_ID('[Procedures].[product-properties]', 'P') IS NOT NULL
  DROP PROCEDURE [Procedures].[product-properties];
GO
CREATE PROCEDURE [Procedures].[product-properties]
  @product_id AS INT
AS
SELECT [A].[id], [A].[name], [PV].[value]
FROM [Tables].[product_attributes] AS [PA]
LEFT OUTER JOIN [Tables].[product_values] AS [PV]
ON [PV].[product_id] = [PA].[product_id]
   AND [PV].[attribute_id] = [PA].[attribute_id]
JOIN [Tables].[attributes] AS [A]
ON [A].[id] = [PA].[attribute_id]
WHERE [PA].[product_id] = @product_id;