sql >> データベース >  >> RDS >> Mysql

1つの列に複数の値を追加する

    ネストされたテーブルを作成することはできません。そして、あなたの頭の中にあることは、そのようなテーブルを設計するのは良い考えではありません。 2つのテーブルが必要です(カテゴリの場合は説明を保持する正確に3つ )。 1つはproduct用です 2番目のテーブルには、各製品のカテゴリが含まれています。 。デザイン例は次のようになります

    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;
    


    1. 破損したOracleエクスポートファイル(.dmp)を修復する方法は?

    2. PHPシリアル化関数-シリアル化されたデータをmysqlに追加してから、フェッチして表示します

    3. DjangoプロジェクトをHerokuに移行する

    4. 大量のクエリを伴うnode-postgres