Created
May 31, 2019 19:26
-
-
Save altafard/c7f22d62661a0fb9a5ab8d38596c921b to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* В базе данных 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; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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;