sql >> Database teknologi >  >> RDS >> Mysql

tilføje flere værdier i én kolonne

Du kan ikke oprette indlejret tabel. Og det, du tænker på, er ikke en god idé at designe et bord sådan. Du skal have to tabeller (nøjagtig tre, som indeholder beskrivelsen, hvis kategorien ). Den ene er til produktet og den anden tabel indeholder kategorien for hvert produkt . Eksempeldesign ville se sådan ud,

CREATE TABLE Product( ProductID INT PRIMARY KEY, ProductName VARCHAR(50) UNIQUE);CREATE TABLE Category( CategoryID INT PRIMARY KEY, CategoryName VARCHAR(50) UNIQUE); CategoryID INT, ProductID INT, CONSTRAINT tb_uq UNIQUE(CategoryID, ProductID)); 

og udfyld prøveregistreringer

INSERT Category VALUES (1, 'Fruit');INSERT Category VALUES (2, 'Grøntsag');INSERT Product VALUES (1, 'Apple');INSERT Product VALUES (2, 'Banana'); INDSÆT produktværdier (3, 'Kål'); INDSÆT produktværdier (4, 'Squash'); INDSÆT produktværdier (5, 'Tomat'); INDSÆT Produkt_Kategori (Kategori-ID, Produkt-ID) VÆRDIER (1,1); INDSÆT Produkt_Kategori ( 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); 

eksempelforespørgsler

-- NORMAL QUERYSELECT a.ProductName, c.CategoryNameFROM Product a INNER JOIN Product_category b ON a.ProductID =b.ProductID INNER JOIN Category c ON b.CategoryID =c.CategoryIDORDER BY ProductName;-- Hvis du ønsker, at catgoryName skal være kommasepareret.VÆLG a.ProductName, GROUP_CONCAT(c.CategoryName) CategoryListFROM Product a INNER JOIN Product_category b ON a.ProductID =b.ProductID INNER JOIN Category c ON b.CategoryID =c.CategoryIDGROUP BY ProductName; kode>

  1. En oversigt over pgModeler til PostgreSQL

  2. PLS-00201:identifikator 'R_CUR' skal erklæres i dynamisk sql

  3. T-SQL for at finde Remote Server Name på den linkede server

  4. XPath for at hente SQL XML-værdi