आप नेस्टेड टेबल नहीं बना सकते। और आपके दिमाग में इस तरह से टेबल डिजाइन करना अच्छा विचार नहीं है। आपके पास दो टेबल होनी चाहिए (बिल्कुल तीन जो कि श्रेणी के अनुसार विवरण रखती हैं ) एक product
. के लिए है और दूसरी तालिका प्रत्येक उत्पाद के लिए श्रेणी . रखती है . उदाहरण डिजाइन इस तरह दिखेगा,
CREATE TABLE Product
(
ProductID INT PRIMARY KEY,
ProductName VARCHAR(50) UNIQUE
);
CREATE TABLE Category
(
CategoryID INT PRIMARY KEY,
CategoryName VARCHAR(50) UNIQUE
);
CREATE TABLE Product_Category
(
RecordD INT AUTO_INCREMENT PRIMARY KEY,
CategoryID INT,
ProductID INT,
CONSTRAINT tb_uq UNIQUE(CategoryID, ProductID)
);
और नमूना रिकॉर्ड तैयार करें
INSERT Category VALUES (1, 'Fruit');
INSERT Category VALUES (2, 'Vegetable');
INSERT Product VALUES (1, 'Apple');
INSERT Product VALUES (2, 'Banana');
INSERT Product VALUES (3, 'Cabbage');
INSERT Product VALUES (4, 'Squash');
INSERT Product VALUES (5, 'Tomato');
INSERT Product_Category (CategoryID, ProductID) VALUES (1,1);
INSERT Product_Category (CategoryID, ProductID) VALUES (1,2);
INSERT Product_Category (CategoryID, ProductID) VALUES (2,3);
INSERT Product_Category (CategoryID, ProductID) VALUES (2,4);
INSERT Product_Category (CategoryID, ProductID) VALUES (1,5);
INSERT Product_Category (CategoryID, ProductID) VALUES (2,5);
नमूना प्रश्न
-- NORMAL QUERY
SELECT a.ProductName, c.CategoryName
FROM Product a
INNER JOIN Product_category b
ON a.ProductID = b.ProductID
INNER JOIN Category c
ON b.CategoryID = c.CategoryID
ORDER BY ProductName;
-- If you want catgoryName to be comma separated
SELECT a.ProductName, GROUP_CONCAT(c.CategoryName) CategoryList
FROM Product a
INNER JOIN Product_category b
ON a.ProductID = b.ProductID
INNER JOIN Category c
ON b.CategoryID = c.CategoryID
GROUP BY ProductName
ORDER BY ProductName;