Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

tambahkan beberapa nilai dalam satu kolom

Anda tidak dapat membuat tabel bersarang. Dan yang ada di pikiran Anda bukanlah ide yang bagus untuk mendesain meja seperti itu. Anda harus memiliki dua tabel (tepat tiga yang berisi deskripsi jika kategorinya ). Salah satunya untuk product dan tabel kedua berisi kategori untuk setiap produk . Contoh desain akan terlihat seperti ini,

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

dan Mengisi Catatan Sampel

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

contoh kueri

-- 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. Tidak dapat memuat kelas driver:com.mysql.jdbc.Driver Spring Boot

  2. Gabung Luar Kiri tidak mengembalikan semua baris dari tabel kiri saya?

  3. Kueri yang dikelompokkan untuk menemukan hanya satu catatan (employee_id =1 atau null)

  4. Hitung persentase pada bulan sebelumnya (tahun yang sama)

  5. Kesalahan fatal:Waktu eksekusi maksimum 30 detik terlampaui di ...\model.php on line 183