私は次のプロジェクトで何をする必要があるかをもっとよく理解しようとしています。仮想マージグループを作成する
私は3 dbテーブルを持っています。
t1 (book)
-----------
id
project_id
label
t2 (box)
-----------
id
project_id
creator_id
label
t3 (how they relate to each other)
-----------
id
box_id
book_id
project_id
user_id
t1.id = t3.boo_id
t2.id = t3.box_id
t2.creator_id = t3.user_id
書籍はボックス内に配置することができ、ボックスにはラベルが付けられます。私のスクリプトは箱ごとの本の総数をカウントしています。異なるユーザーが同じ書籍を箱に入れて別々の名前を付けるが、閉じるまではうまくいく。 雑多、その他とその他:
私は私のようないくつかの類似した箱のラベルを、選択できる「仮想マージ」のいくつかの並べ替えを実装できるようにしたいと思います。、自分のラベルを割り当てて、MISCとし、この3つのボックスの書籍がこの新しいものの中に入っているかのようにスクリプトで扱います。
これを行う方法はわかりません。私はそれらを永久に併合したくありません。最終的に、マージされたグループからいくつかの「ボックス」を削除し、スクリプトが合計を再計算する機能を追加します。
私は新しいテーブルを追加する必要があると思う:この
SELECT id, label
FROM t1
WHERE project_id = $project_id
ORDER BY id
と合計などの
SELECT id, label
FROM t2
WHERE project_id = $project_id
ORDER BY id
冊:
t4
----------
id
box_id
label
現在、私のスクリプトは、このようなボックス情報をつかみますこのように数えます
SELECT COUNT(DISTINCT user_id) AS cnt
FROM t3
WHERE project_id = $project_id
"マージされたグループ"が存在する場合とそうでない場合のクエリを書き直すにはどうすればよいですか?
のようなものが含まれるかもしれないと思いますあなたはt3で重複した情報を持っているようですが、単一のプロジェクトおよび作成者(t2ごと)に属しているように見えます。これにより、project_idおよびuser_idがt3で冗長化されます。 – Dancrumb
t3には、t1の本がt2のボックスにどのように関連しているかという情報のみが含まれています。基本的には、どの本にどのユーザがどの書籍を置いたのか。 t3は管理者によって使用され、トータルですべてのトランザクション履歴を見ることができます。 t2データはユーザーによって作成されます。 – santa