1

テーブル

ID|owner_id|work_id|lorem|etc|
1 |00123   | 00213 |XXXXX|XXX|
2 |00124   | 00213 |XXXXX|XXX|

owner_id (fk) owners.id (owners[id,name,etc])

work_id (fk) work.id (work[id,name,etc])

問題はcodeigniter、私が

select(table.*,work.name as work,owners.name as owner) from table

そのテーブルにはすでにfk-refが含まれているため、結合を自動的に処理しますか?または私は含める必要がありますjoin('owner','owner.id=table.owner_id)か?

実際に必要なのは、fkを含むテーブルを選択すると、モジュールに特定の関数を作成することを心配せずに、refテーブルの列名を渡すだけで、このfk列がref行の1つの列に置き換えられることです。各クエリ。

私の現在の解決策:

リレーションを含むテーブルごとにビューを作成し、すべてのfk列を目的のref値に置き換えることでしたが、6つのテーブルがあり、そのうち5つがfkであるため、dbに6つのテーブルと5つのビュー(11テーブル)があります。私にとっては本当に親切な混乱ですので、これを行うためのより賢い方法はありますか?

4

1 に答える 1

1

FKとは何か、テーブル内で何をするのかについて混乱していると思います。

FK 制約は、存在する場合にデータの整合性を付与し、テーブル内のデータを関連付けます。何にも加わりません。

関連するテーブル全体でレコードを選択する場合は、

SELECT * FROM table1,table2 WHERE table1.K1 = table2.FK1

また

SELECT * FROM table1 JOIN table2 ON table1.K1 = table2.FK1

そしてはい、CodeIgniter にこれらのクエリを実行するように指示する必要があります

于 2013-01-15T10:43:57.547 に答える