Skip to content

Instantly share code, notes, and snippets.

@altafard
Created May 31, 2019 19:26
Show Gist options
  • Save altafard/c7f22d62661a0fb9a5ab8d38596c921b to your computer and use it in GitHub Desktop.
Save altafard/c7f22d62661a0fb9a5ab8d38596c921b to your computer and use it in GitHub Desktop.
/* В базе данных MS SQL Server есть продукты и категории.
* Одному продукту может соответствовать много категорий, в одной категории может быть много продуктов.
* Напишите SQL запрос для выбора всех пар «Имя продукта – Имя категории».
* Если у продукта нет категорий, то его имя все равно должно выводиться.
*/
CREATE TABLE Products (
Id INT PRIMARY KEY,
"Name" TEXT
);
INSERT INTO Products
VALUES
(1, 'C# in a Nutshell'),
(2, 'KIA Rio'),
(3, 'ASUS Rog Strix');
CREATE TABLE Categories (
Id INT PRIMARY KEY,
"Name" TEXT
);
INSERT INTO Categories
VALUES
(1, 'Book'),
(2, 'Car'),
(3, 'Gift');
CREATE TABLE ProductCategories (
ProductId INT FOREIGN KEY REFERENCES Products(Id),
CategoryId INT FOREIGN KEY REFERENCES Categories(Id),
PRIMARY KEY (ProductId, CategoryId)
);
INSERT INTO ProductCategories
VALUES
(1, 1),
(1, 3),
(2, 2);
SELECT P."Name", C."Name"
FROM Products P
LEFT JOIN ProductCategories PC
ON P.Id = PC.ProductId
LEFT JOIN Categories C
ON PC.CategoryId = C.Id;
@KsyuKsy
Copy link

KsyuKsy commented Jun 25, 2020

CREATE TABLE Products (
Id INT PRIMARY KEY,
"Name" TEXT
);

INSERT INTO Products
VALUES
(1, 'Beef'),
(2, 'Milk'),
(3, 'Tomato');

CREATE TABLE Categories (
Id INT PRIMARY KEY,
"Name" TEXT
);

INSERT INTO Categories
VALUES
(1, 'Meet'),
(2, 'Dairy_produce'),
(3, 'Vegetables');

CREATE TABLE ProductCategories (
ProductId INT FOREIGN KEY REFERENCES Products(Id),
CategoryId INT FOREIGN KEY REFERENCES Categories(Id),
PRIMARY KEY (ProductId, CategoryId)
);

INSERT INTO ProductCategories
VALUES
(1, 1),
(2, 3),
(3, 3);

SELECT P."Name", C."Name"
FROM Products P
LEFT JOIN ProductCategories PC
ON P.Id = PC.ProductId
LEFT JOIN Categories C
ON PC.CategoryId = C.Id;

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment