Mysql
 sql >> Baza danych >  >> RDS >> Mysql

dodaj wiele wartości w jednej kolumnie

Nie możesz tworzyć tabeli zagnieżdżonej. A myśl o tym nie jest dobrym pomysłem, aby zaprojektować taki stół. Powinieneś mieć dwie tabele (dokładnie trzy, które zawierają opis, jeśli kategoria ). Jeden dotyczy product a druga tabela zawiera kategorię dla każdego produktu . Przykładowy projekt wyglądałby tak,

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) );

i wypełnij przykładowe rekordy

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);

przykładowe zapytania

-- 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;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dlaczego to zapytanie MySQL się zawiesza?

  2. Jak wyłączyć tryb ścisły MySQL?

  3. Doktryna - Jak wydrukować prawdziwy sql, a nie tylko przygotowane oświadczenie?

  4. Jak przetworzyć datę 0000-00-00 w zapytaniu jdbc MySQL?

  5. Jak wstawić do MySQL za pomocą przygotowanej instrukcji z PHP