Advertisement
MLCPRO

mindbox

Sep 1st, 2021
1,605
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 2.20 KB | None | 0 0
  1. //Sql schema __________________________________________________________________________________
  2. create table Products
  3. (
  4.     ID int primary key identity (1, 1),
  5.     NAME nvarchar(128) not null
  6. );
  7.  
  8. create table Categories
  9. (
  10.     ID int primary key identity (1, 1),
  11.     NAME nvarchar(128) not null
  12. );
  13.  
  14. create table ProductCategories
  15. (
  16.     ID int primary key identity (1, 1),
  17.     ProductId int,
  18.     CategoryId int
  19. );
  20.  
  21. INSERT INTO Products
  22.     ([name])
  23. VALUES
  24.     ('Coca-cola'),
  25.     ('iPhone 9000 pro max ultra rtx noscope 360(R)'),
  26.     ('umbrella'),
  27.     ('cat food')
  28. ;
  29.  
  30. INSERT INTO Categories
  31.     ([name])
  32. VALUES
  33.     ('drinks'),
  34.     ('electronics'),
  35.     ('apple products')
  36. ;
  37.  
  38. insert into ProductCategories
  39.   ([ProductId],[CategoryId])
  40. VALUES
  41.   (1,1),
  42.   (2,2),
  43.   (2,3)
  44. ;
  45.  
  46.  
  47. //__________________________________________________________________________________________________
  48. //В задании сказано: "Напишите SQL запрос для выбора всех пар «Имя продукта – Имя категории». Если у продукта нет категорий, то его имя //все равно должно выводиться.", ниже я привёл два варианта решения, поскольку не совсем понял, какой из них лучше подойдёт.
  49.  
  50.  
  51. Select p.name as Product,c.name as Category from Products p
  52. left join ProductCategories pc on p.id = pc.ProductId
  53. left join Categories c on pc.CategoryId = c.Id
  54.  
  55.  
  56. //********************************Result*********************************************
  57. Coca-cola   drinks
  58. iPhone 9000 pro max ultra rtx noscope 360(R)    electronics
  59. iPhone 9000 pro max ultra rtx noscope 360(R)    apple products
  60. umbrella    (null)
  61. cat food    (null)
  62.  
  63. SELECT p.name as Product, STRING_AGG(c.name, ', ') AS Categories
  64. FROM Products p
  65. left join ProductCategories pc on p.id = pc.ProductId
  66. left join Categories c on pc.CategoryId = c.Id
  67. Group by p.name
  68. //***********************************Result******************************************
  69. Product Categories
  70. cat food    (null)
  71. Coca-cola   drinks
  72. iPhone 9000 pro max ultra rtx noscope 360(R)    electronics, apple products
  73. umbrella    (null)
  74.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement