Group
というテーブルとというテーブルがあるという問題に直面していますEntry
。Group
テーブルには主キーがありますId
。Entry
テーブルには主キー、テーブルの呼び出されId
たへの外部キーがあります。表にはもう 1 つの列があります。これは整数であり、一番上にゼロが表示されるソートの重みを教えてくれるだけです。Group
Id
GroupId
Entry
Weight
Weight
基本的に何が起こったかというとWeight
、データベースの設計時に誰かがこのフィールドを null 可能にしました。ここで、テーブルに追加する予定の制約Weight
に合わせて調整する必要があります。これにより、基本的に同じグループにある場合に、2 つのエントリが同じ並べ替えの重みを持つことを防ぎます。UNIQUE
UNQIUE(GroupId, Weight)
Entry
Entry
Weight
既存のすべてのデータを調べて、グループごとに各エントリの列に 0 から N までの番号を付けることができるクエリはどれですか。N はEntry
内のエントリの数です。Group
の に基づいて重みを設定し、特定のId
のの最小値が最小値になるEntry
ようにします。Id
Entry
Group
Weight
Group
テーブルを通過し、すべてのEntry
エントリを結合してから、それらを反復処理してシーケンスを割り当てる1 つの大きな古いクエリが必要です。しかし、どこから始めればよいかわかりません。