2つのリスト(私の場合は要件とテストケース)の関係を格納するこのデータベーステーブル(いくつかのサンプルコード)を持っていて、テストケースとカラムを示す行を持つテーブルを作成し、関係が存在する。多対多リレーションシップを2列テーブルから変換するにはどうすればよいですか?
いくつかの制限
- これはオープンソーステストケース管理システム(TestLinkの)に属しているように私は、DBの構造を変更する贅沢を有していません。
- これにはいくつかのコードを書くことができますが、私はこれをMySQLで行うことができます。
- ああ、はい、それはMySQLを使用するので、これはその環境で動作する必要があります。
この機能は存在していましたが、通常、この種の作業によって数万のテストケースと要件がある場合には、データベースが無駄になります。
テーブル
pivot
(req_id
INT(11)、testcase_id
INT(11) )を作成します。テーブルの/*データ
pivot
*/pivot
(req_id
、testcase_id
)値(1,1)に挿入します。insert into
pivot
(req_id
,testcase_id
)値(2,2);insert into
pivot
(req_id
,testcase_id
)値(3,3);insert into
pivot
(req_id
,testcase_id
)値(4,1);insert into
pivot
(req_id
,testcase_id
)値(5,2);insert into
pivot
(req_id
,testcase_id
)値(6,3);insert into
pivot
(req_id
,testcase_id
)値(2,1);insert into
私は、クエリから抜け出すためにしたいことは、このようなsomethignに見えるテーブルであるpivot
(req_id
,testcase_id
)値(3,2);
:
1 2 3 4 5 6
1 x x x
2 x x x
3 x x
注:行testcase_idsと列が「req_ids」
されています誰もがちょうどSQLとこれを得る方法のヒントを持っていますか?
以下
リレーショナルモデルのレポートを生成しようとしていますが、これはSQLで行うべきことではありません。 SQLは、データをフォーマットするのではなく、構造化されたデータを確実に格納および返すためのエンジンです。レポートツールやスプレッドシートでも、このデータを簡単にピボットできるようになります。 – MyItchyChin
既知のtestcase_idsのセットを持っているなら、退屈な一連の左結合を書いて結果を得ることができます。あなたがわからない場合は、一連の左結合を動的クエリとして生成し、それを前述の厄介なクエリにまとめます。それはいずれの方法でも退屈で不愉快です。 – Griffin
テストケースは(要件のリストのように)時間とともに成長するので、これを実現する一般的な方法が好ましい方法です。 –