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

モデルのテーブル名ランタイムを変更する

    年などの情報は、データ以降、テーブル名として保存しないでください。実際に使用できるデータとして、個別のテーブルエントリとして保存する必要があります。

    company_historical_<year>を変更します company_historicalだけに company_historical_yearsという新しいテーブルを作成します 会社の歴史の可能性のあるすべての年があります エントリを持つことができます。

    次に、会社の履歴間の関係を作成します エントリおよび関連するCompanyHistorcal Years エントリ。

    つまり、次のようなものです:

    var CompanyHistoricalYears = sequelize.define('company_historical_years', {
        year: {
            type: Sequelize.INTEGER
        },
        classMethods: {
            associate: function (models) {
                CompanyHistoricalYears.hasMany(models.CompanyHistorical);
            }
        }
    };
    
    
    var CompanyHistorical = sequelize.define('company_historical', {
        ...
        classMethods: {
            associate: function (models) {
                CompanyHistorical.belongsTo(models.CompanyHistoricalYears);
            }
        }
    };
    

    次に、次のコマンドでクエリを実行できます:

    CompanyHistoricalYears.findOne({
        where: {
            year: 2011, // or you can use "new Date().getFullYear()"
        },
        include: [CompanyHistorical]
    });
    

    これにより、単一のCompanyHistoricalYearsが得られます エントリとすべてのCompanyHistorical その年内のエントリ。

    これ以外の意味がある場合は、質問があれば遠慮なくコメントしてください。




    1. MySQLカウント行のパフォーマンス

    2. ソートのためのVarcharから数値への変換

    3. SQLの最後の行として合計を追加するにはどうすればよいですか?

    4. 複数の行を更新するmysql